我有一个着陆页,有几个动作。该操作位于默认隐藏的表格行内,并在用户单击操作标题时打开。我想根据查询字符串变量来控制显示/隐藏的内容。我该如何根据查询字符串变量使用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