我有一個着陸頁,有幾個動作。該操作位於默認隱藏的表格行內,並在用戶單擊操作標題時打開。我想根據查詢字符串變量來控制顯示/隱藏的內容。我該如何根據查詢字符串變量使用jQuery show()hide()錶行?
例如,其中一個操作是「請求呼叫」。該網站的其他頁面上有鏈接請求打電話。當用戶點擊該鏈接時,我希望他們通過顯示的「請求呼叫」行轉到登錄頁面。
我有一個着陸頁,有幾個動作。該操作位於默認隱藏的表格行內,並在用戶單擊操作標題時打開。我想根據查詢字符串變量來控制顯示/隱藏的內容。我該如何根據查詢字符串變量使用jQuery show()hide()錶行?
例如,其中一個操作是「請求呼叫」。該網站的其他頁面上有鏈接請求打電話。當用戶點擊該鏈接時,我希望他們通過顯示的「請求呼叫」行轉到登錄頁面。
將從this article和CMS'sexcellent answer到similar 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>
如果您將所有內容都放在一個頁面中,您可能需要更多內容:http://www.contentwithstyle.co.uk/content/fixing-the-back-button-and-enabling-bookmarking-for -ajax-應用 – 2009-08-13 13:56:58
難道你不能做一些服務器端處理來產生必要的處理嗎?即使用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不會顯示一行。
我總是對使用JavaScript嵌入服務器端標籤感到有點緊張。也許可以考慮把它放在頁面上的隱藏變量,並通過jQuery訪問? – 2009-08-12 15:40:34
我可以理解你來自哪裏,這就是爲什麼我將交換機固定在那裏以防止任何XSS嘗試,唯一可以傳遞給JavaScript的值是在服務器端代碼中設置的值,但是通過網址參數。 隱藏的輸入變量總是一個選項,但我個人討厭把它們扔進去,除非絕對必要。 – 2009-08-12 15:45:24
你能告訴我們你的HTML,JS代碼? – RaYell 2009-08-12 15:31:58