【问题标题】:DIV display block state after refreshing page刷新页面后DIV显示块状态
【发布时间】:2014-01-28 08:14:38
【问题描述】:

我正在尝试使用 jquery 保存带有 cookie 的状态,但没有运气。有人可以检查我的代码有什么问题吗?

$('.slide1').click(function() {
    $('.target1').slideToggle('slow', function() {
        $(this).toggleClass('.target1');
    });
    $.cookie('form_visible', $('.target1').css('display','block').toString());
    return false;
});         
$(function() {
    if($.cookie('form_visible') == 'true') {
        $('.target1').css('display','block');
    } else {
        $('.target1').css('display','none');
    }
});

http://jsfiddle.net/J9zQm/

【问题讨论】:

  • 您的 jsfiddle 不起作用,因为您没有包含 jQuery 和 cookie 插件。如果不是现场演示,请不要链接现场演示。
  • 我认为 jsfiddle 有库,但我不确定你在说什么 cookie 插件,我在另一篇文章中找到了这段代码并且它有效,但在我进行了一些更改以使其适用于我的网站之后它停止工作
  • 你需要一个插件才能使用$.cookie
  • 这样好吗?
  • 这是 jQuery 库,你需要 cookie plugin 用于 jQuery。

标签: javascript jquery jquery-plugins jquery-cookie


【解决方案1】:

一些问题:

  1. 你需要一个插件

    要使用$.cookie,您需要plugin。你好像不知道。

  2. 您正在尝试存储"[object Object]"

    $('.target1').css('display','block')
    

    返回一个对象(即$('.target1')

    那么,

    $('.target1').css('display','block').toString()
    

    返回

    "[object Object]"
    
  3. $('.target1') 为空

    你使用

    $('.target1').slideToggle('slow', function() {
        $(this).toggleClass('.target1');
    });
    

    即:

    • 如果$('.target1') 为空,则什么也不做
    • 如果$('.target1') 不为空,则删除其类'.target1',以便后面的$('.target1') 为空。

这里有一个你想要的工作示例,但使用 sessionStorage 而不是 $.cookie,因为我不知道它是如何工作的。

JS:

var $target1 = $('.target1');
$target1.toggleClass('hidden', sessionStorage.getItem('form_visible') != 'true');
$('.slide1').click(function() {
    $target1.slideToggle('slow', function() {
        $(this).toggleClass('hidden');
    });
    sessionStorage.setItem('form_visible', $target1.hasClass('hidden'));
});

CSS:

.target1.hidden{
    display:none;
}

Demo

【讨论】:

  • 它似乎工作但它打破了我认为当我尝试将 .target1 下的内容移动到中间时它会在它打开后向左射击
  • @Bamba 我不明白。你是在说我的demo吗?
  • 是的,如果你添加 width:60%;和保证金:0自动;对于 .slide1 和 .target1,你会明白我的意思,它不会像预期的那样停留在中间
  • @Bamba 如果你想让文本居中,试试text-align: centerDemo
  • 成功了!我想这是你把它放在哪里的问题,而 .target1.hidden 让它变得很奇怪。感谢您的所有帮助,非常感谢!
猜你喜欢
  • 1970-01-01
  • 2019-05-19
  • 1970-01-01
  • 2013-05-04
  • 1970-01-01
  • 2019-02-11
  • 2019-01-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多