2014-09-22 87 views
1

使用jquery cookie plugin我有一个非常简单的功能,像这样:jQuery的饼干总是返回1

demoPopupInit: function() { 
     // alert($.cookie('modal-popup')); 
     if (! $.cookie('modal-popup')) { 
      $.cookie('modal-popup',1) ; 
     } 

     if ($.cookie('modal-popup') <= 3) { 
      // return; 

     var modal_cookie = $.cookie('modal-popup') ; 
     modal_cookie = modal_cookie++; 
     $("#intro_index").modal({backdrop:true}); 
     $.cookie('modal-popup', modal_cookie); 
     } 

    }, 


    } 

我相信这是一个非常简单的错误,但我可怜的JS技能不要让我明白为什么alert()在开始时总是把1 ..

我也试过

if (! $.cookie('modal-popup') == NULL) { 
     $.cookie('modal-popup',1) ; 

当然不过,这个问题是不存在的,并且在控制台中没有报告其他错误。 我的目标是仅在3次首次访问时打开模式弹出窗口。

回答

1

只要改变后增量​​前​​增量:

modal_cookie = modal_cookie++; 

modal_cookie = ++modal_cookie; 

而且饼干返回一个字符串值,是安全使用parseInt函数比较int值。 并避免多次读取cookie,将其保存在一个变量中。

简称:

demoPopupInit: function() { 

     if (!$.cookie('modal-popup')) { 
      $.cookie('modal-popup',1) ; 
     } 
     var curval = parseInt($.cookie('modal-popup')); 
     if (curval <= 3) { 
      // return; 

     $("#intro_index").modal({backdrop:true}); 
     $.cookie('modal-popup', ++curval); 
     } 

    }, 
+0

谢谢,这确实有效。我实际上尝试过使用'parseInt()' - 我不知道为什么它仍然不起作用。你能否向我解释为什么阅读一个cookie multime时间不是一个好习惯? (我也不明白为什么'++ modal_cookie'很重要,但也许这是另一个问题,非常有帮助 – 2014-09-22 15:43:50

+0

您正在使用一个插件,它可能在内部运行一个循环或可能是正则表达式来查找cookie集合的值基于名称传递,具有明确的开销,所以多次调用是不必要的,而且当你可以通过阅读一次就可以实现高成本。对于第二个问题,试试这个http://www.w3schools.com/js/tryit.asp? filename = tryjs_oper_incr,然后将++ yy更改为y ++并再次检查,这将解释 – SSA 2014-09-22 16:22:52

+0

好的,所以,我想你说的是关于cookie的性能方面的明智之举。关于preincrement,我得到了提示和示例[来自这里]( http://stackoverflow.com/a/1547280/1244126)阅读你的第一个评论后,再次感谢.. – 2014-09-22 22:59:38

1

尝试:

if($.cookie('modal-popup').length < 1){ 
    $.cookie('modal-popup',1); 
} 

如果cookie不存在,长度将是-1;如果是这样,它会是1或更大。

+0

是的..这是现在算起,但3没有停止 – 2014-09-22 11:25:24

+0

为3意味着是饼干的cookie值或数字(?)? – ggdx 2014-09-22 13:03:52

+0

3是cookie的值(弹出窗口出现的次数) – 2014-09-22 15:42:45