JQuery Cookie不起作用

时间:2015-02-05 14:13:50

标签: javascript jquery cookies

我有一个javascript函数showHide(shID),这是一个隐藏div并在点击“read more”后显示内容的函数。这是我的小提琴:Fiddle

在将JQuery Cookie添加到此函数后,它看起来像函数showHide(shID)已经不见了,任何人都可以帮我修复它吗?谢谢,我真的需要帮助。这里是我的小提琴:Fiddle

我需要像这样做smtg:首先点击“readmore”,隐藏的内容会显示,设置完cookie后用户回来访问我的页面隐藏内容仍然显示。

<div id="wrap">
   <a href="#" id="example-show" class="showLink" onclick="showHide('example');">
      <button class="btn-u btn-u-lg btn-block btn-u-dark-orange">
         Read More
      </button>
   </a>
   <div id="example" class="more">
      <iframe width="600" height="315" src="//www.youtube.com/embed/BaPlMMlyM_0" frameborder="0" allowfullscreen></iframe>
      <p>Congratulations! You've found the magic hidden text! Clicking the link below will hide this content again.</p>
   </div>
</div>  

2 个答案:

答案 0 :(得分:3)

我稍微更改了脚本逻辑:在showhide-...设置为1时显示内容。我还在showHide函数中添加了一个参数:setCookie。当这是false时,cookie没有设置/更改。

function showHide(setCookie) {
    var shID = $(this).data("showhide")
      , $shEl = $("#" + shID)
      , $showHide = $("#" + shID + '-show')
      ;

    if ($shEl.is(":hidden")) {
        if (setCookie !== false) {
            jQuery.cookie("showhide-" + shID, 1);
        }
        $showHide.hide();
        $shEl.show();
    } else {
        if (setCookie !== false) {
            jQuery.cookie("showhide-" + shID, 0);
        }
        $showHide.show();
        $shEl.hide();
    }
}

jQuery(document).ready(function () {
    $("#example-show").on("click", showHide);
    if (jQuery.cookie("showhide-" + "example") == '1') {
        showHide.call($("#example-show").get(0), false);
    }
});

要添加过期日期,只需将第三个参数传递给$.cookie调用:

var date = new Date();
var minutes = 30;
date.setTime(date.getTime() + (minutes * 60 * 1000));
$.cookie("example", "foo", { expires: date });

(有关更多信息,请参阅How to expire a cookie in 30 minutes using jQuery?

JSFIDDLE

答案 1 :(得分:0)

Cookie的名称区分大小写,您必须阅读之前设置的cookie名称。在你的情况下你设置 jQuery.cookie("showHide-"+shID, 1)并检查jQuery.cookie("showhide-" + "example")。 &#34;显示隐藏 - &#34;和&#34; showhide - &#34;是不匹配的。

修改

    if (document.getElementById(shID + '-show').style.display != 'none') {
        // Set cookie when button has been clicked 
        jQuery.cookie("showhide-"+shID, 1);
        // ...
    } else {
        jQuery.cookie("showhide-"+shID, 0);
        // ...
    }

    if (jQuery.cookie("showhide-" + "example") == 1) {
        // Trigger button click if cookie is set 
        $("#example-show").trigger("click");
    }