Javascript 如何实现jQuery边栏和cookie
我已经通过jQueryAPI设置了一个侧栏。现在我注意到当我刷新页面时,边栏会自动关闭 我在互联网上发现了一个cookie,但由于某种原因,它与我的边栏脚本不兼容 我做错了什么Javascript 如何实现jQuery边栏和cookie,javascript,jquery,Javascript,Jquery,我已经通过jQueryAPI设置了一个侧栏。现在我注意到当我刷新页面时,边栏会自动关闭 我在互联网上发现了一个cookie,但由于某种原因,它与我的边栏脚本不兼容 我做错了什么 $(document).ready(function() { var sidebar_status = $.cookie("sidebar_status"); if (sidebar_status == null) { $("a#ToggleSidebar").addClass('clo
$(document).ready(function() {
var sidebar_status = $.cookie("sidebar_status");
if (sidebar_status == null) {
$("a#ToggleSidebar").addClass('closed');
$("#sidebar").hide();
};
if (sidebar_status == "closed") {
$("a#ToggleSidebar").removeClass('open');
$("a#ToggleSidebar").addClass('closed');
$("#sidebar").css("display", "none");
};
if (sidebar_status == "open") {
$("a#ToggleSidebar").addClass('open');
};
$("a#ToggleSidebar").click(function() {
if ($("a#ToggleSidebar").attr("class") == 'open') {
$(this).removeClass('open');
$(this).addClass('closed');
$.cookie("sidebar_status", "closed", {
path: '/',
expires: 100
});
$("#sidebar").animate({
width: 'hide',
opacity: 'hide'
}, 'slow');
} else {
$(this).removeClass('closed');
$(this).addClass('open');
$.cookie("sidebar_status", "open", {
path: '/',
expires: 100
});
$("#sidebar").animate({
width: 'show',
opacity: 'show'
}, 'slow');
}
});
编辑:
有一个像按钮
的东西可以打开一个
。现在,我希望当有人第一次访问页面时,
会关闭。当用户单击
时,会打开
并保存cookie。当用户现在应该刷新页面时,
应该保持打开状态,直到用户使用
再次关闭页面。这就是我无法工作的地方。检查我的答案jquery cookie插件和如何使用它的情况相同。希望它能帮助你,或者至少能引导你走上正确的方向。来自OP的评论:现在侧边栏打开,一个cookie保存在计算机上,但当我再次尝试关闭侧边栏时,什么也没有发生
对于jQuery1.6及更高版本,此
if ($("a#ToggleSidebar").attr("class") == 'open') {
应该是这样的(用prop
替换attr
)
但这是最好的
if ($("a#ToggleSidebar").hasClass("open")) {
这个
$(this).removeClass('open');
$(this).addClass('closed');
…可以简单地写成这样(称为链接)
当我们这么做的时候 这: …可以这样写
if (sidebar_status == null) {
$("a#ToggleSidebar").addClass('closed');
$("#sidebar").hide();
} else if (sidebar_status == "closed") {
$("a#ToggleSidebar").removeClass('open').addClass('closed');
$("#sidebar").hide();
} else if (sidebar_status == "open") {
$("a#ToggleSidebar").addClass('open').removeClass('closed');
};
(jQuery
.hide()
jQuery.css(“显示”、“无”);
)什么不起作用?发生了什么,你期望发生什么?看看这个答案,虽然不是你问题的解决方案,而是同一个问题的另一种实现@C.Felix,当有评论要求澄清时,你可以通过编辑它将这一点添加到你的原始帖子中;尤其是当您需要发布更多代码时。@Sparky672,谢谢您的建议!我将在下一个问题中记住这一点;)简单地将SO答案链接到另一个SO答案是不理想的。答案应该是完全独立的。这是我在另一篇关于cookies的帖子上的答案。我应该复制/粘贴我自己的答案吗?为什么不呢?这毕竟是你的答案。@Andres,不幸的是,这对我没有帮助:(我发现了饼干没有保存的问题。我丢失了一个});最后。现在侧边栏打开,一个cookie保存在计算机上,但当我再次尝试关闭侧边栏时,什么也没有发生:(你是说它没有关闭还是没有将操作保存在cookie中?非常感谢!我正在阅读jQuery页面,这时一封电子邮件来了,告诉我有一个新的答案:)
$(this).removeClass('open').addClass('closed');
if (sidebar_status == null) {
$("a#ToggleSidebar").addClass('closed');
$("#sidebar").hide();
};
if (sidebar_status == "closed") {
$("a#ToggleSidebar").removeClass('open');
$("a#ToggleSidebar").addClass('closed');
$("#sidebar").css("display", "none");
};
if (sidebar_status == "open") {
$("a#ToggleSidebar").addClass('open');
};
if (sidebar_status == null) {
$("a#ToggleSidebar").addClass('closed');
$("#sidebar").hide();
} else if (sidebar_status == "closed") {
$("a#ToggleSidebar").removeClass('open').addClass('closed');
$("#sidebar").hide();
} else if (sidebar_status == "open") {
$("a#ToggleSidebar").addClass('open').removeClass('closed');
};