2009-08-12 34 views
2

我有一個着陸頁,有幾個動作。該操作位於默認隱藏的表格行內,並在用戶單擊操作標題時打開。我想根據查詢字符串變量來控制顯示/隱藏的內容。我該如何根據查詢字符串變量使用jQuery show()hide()錶行?

例如,其中一個操作是「請求呼叫」。該網站的其他頁面上有鏈接請求打電話。當用戶點擊該鏈接時,我希望他們通過顯示的「請求呼叫」行轉到登錄頁面。

+0

你能告訴我們你的HTML,JS代碼? – RaYell 2009-08-12 15:31:58

回答

1

將從this articleCMS'sexcellent answersimilar question的內容刪除。

使用名爲showRow的查詢字符串變量並將其傳遞給要顯示的行的id(不是非常複雜但是一個好的起點)。

使用jQuery的顯示請求的行:

<table> 
    <thead> 
    <tr> 
     <th>col 1</th> 
    </tr> 
    </thead> 
    <tbody> 
    <tr id="row1" style="display: none;"> 
     <td>this is row 1</td> 
    </tr> 
    <tr id="row2" style="display: none;"> 
     <td>this is row 2</td> 
    </tr> 
    </tbody> 
</table> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     var row = getQueryString()["showRow"]; 
     if (row !== undefined) $("table tr#" + row + "").show(); 
    }); 

    getQueryString = function() { 
     var assoc = []; 
     var keyValues = unescape(location.search.substring(1)).split('&'); 
     for (var i in keyValues) { 
      var key = keyValues[i].split('='); 
      assoc[key[0]] = key[1]; 
     } 
     return assoc; 
    } 
</script> 
+0

如果您將所有內容都放在一個頁面中,您可能需要更多內容:http://www.contentwithstyle.co.uk/content/fixing-the-back-button-and-enabling-bookmarking-for -ajax-應用 – 2009-08-13 13:56:58

0

難道你不能做一些服務器端處理來產生必要的處理嗎?即使用RAW PHP,你還沒有說服務器端語言,你可以這樣做:

<? 
$showRow = ""; 
switch($_GET['title']) 
{ 
    case "call": 
    //$showRow is the id of the row to be shown 
    $showRow ="call" 
    break; 
} 
?> 

...rest of page.... 

<script type="text/javascript"> 
    $(document).ready(function() { 
    //show the row 
    $("#<?=$showRow;?>").show(); 
    }); 
</script> 

您還可以設置行的id是URL參數切出一個交換機的需求。你還需要做一些空測試,以確保如果沒有顯示URL參數,jquery不會顯示一行。

+0

我總是對使用JavaScript嵌入服務器端標籤感到有點緊張。也許可以考慮把它放在頁面上的隱藏變量,並通過jQuery訪問? – 2009-08-12 15:40:34

+0

我可以理解你來自哪裏,這就是爲什麼我將交換機固定在那裏以防止任何XSS嘗試,唯一可以傳遞給JavaScript的值是在服務器端代碼中設置的值,但是通過網址參數。 隱藏的輸入變量總是一個選項,但我個人討厭把它們扔進去,除非絕對必要。 – 2009-08-12 15:45:24