我遇到这种情况: - 有一个PHP页面 - 拥有折叠菜单的jQuery脚本 - 单击其中一个折叠元素,通过在php中传递变量来加载另一个页面
问题: - jQuery脚本也重新加载并取消我之前的选择。
这是一个例子。我点击“菜单”,jQuery脚本作用于“collapser”但是当我点击“Fish”链接(或其他)时,我显示了页面,但菜单不会显示为已折叠。
我想要实现的目标: - 在从一个页面移动到另一个页面时保持菜单折叠
这是一个php代码示例。
echo rightMenu();
function rightMenu(){
$r = '';
$r .= '<ul id="collapser"><li>Menu<ul>';
$r .= '<li><a href="main.php?show=page1">Fish</a></li>';
$r .= '<li><a href="main.php?show=page2">Vegetables</a></li>';
$r .= '<li><a href="main.php?show=page3">Meat</a></li></ul>';
$r .= '</li></ul>';
return $r;
};
谢谢你, 和Myriam
答案 0 :(得分:1)
如果您包含jQuery.cookie
,则可以使用Cookie来执行此操作,这应该更简单:
$("#collapser").click(function () {
//change to more appropriate value
$.cookie('autocollapse', $(this).is(":visible"), {expires: 30});
});
//initial page load
if ($.cookie('autocollapse')) {
$("#collapser").click();
}
答案 1 :(得分:0)
单击折叠时,您可以发送一个ajax请求,该请求记录某种表示崩溃的会话变量:
//Your collapser click function
//record hidden status in data
$("#collapser").click(function () {
if ($(this).data('hidden')) {
$(this).slideDown().data('hidden', false);
}
else {
$(this).slideUp().data('hidden', true);
}
//record hidden (collapsed) status on the server
$.post('/record-collapser-hide.php', {'hidden': $(this).data('hidden')});
});
//On initial page load, collapse if #autocollapse is in the DOM
//Added by PHP code below
if ($("#autocollapse").length) {
$("#collapser").data('hidden', false).click();
}
//--- record-collapser-hide.php ---
session_start();
$_SESSION['collapsercollapsed'] = isset($_POST['hidden']) ? $_POST['hidden'] : 0;
//--- function rightMenu() ---
...
$r .= '</li></ul>';
if (isset($_SESSION['collapsercollapsed']) && $_SESSION['collapsercollapsed']) {
$r .= "<span style='display: none' id='autocollapse'> </span>";
}
注意:此代码很可能不会按原样运行,但您应该能够遵循基本的想法。