JQuery cookie在其他Function中设置

时间:2015-01-31 16:39:19

标签: javascript jquery cookies

我有一个javascript函数showHide(shID),这是一个隐藏div或显示内容后点击的功能"阅读更多" 。这是我的小提琴:http://jsfiddle.net/Garfrey/5xf72j4m/8/

正如您所看到的,当用户点击它并显示更多内容时,我只需隐藏一次,意味着当用户返回访问我的页面并且隐藏的内容仍在显示时。所以我需要添加JQuery cookie,但是我写的是错误的并且它不起作用。我是Javascript的新手。有谁知道如何解决它?提前谢谢,我真的需要帮助。

这是我的功能代码:

<script language="javascript" type="text/javascript">
jQuery(document).ready(function(){
   if($.cookie("example")=='1') {
      function showHide(shID) {
      if (document.getElementById(shID+'-show').style.display != 'none') {
         document.getElementById(shID+'-show').style.display = 'none';
         document.getElementById(shID).style.display = 'block';
      }
      else {
         document.getElementById(shID+'-show').style.display = 'inline';
         document.getElementById(shID).style.display = 'none';
      }
   }
   } else {

        $.cookie("example", "1");
    }                 
});

</script>

1 个答案:

答案 0 :(得分:0)

你不能在jQuery的ready函数中定义一个函数而不做这样的事情

&#13;
&#13;
var showHide;
$(function() { // Document ready
  showHide = function(sh) {
    //Insert function code here
  };
});
&#13;
&#13;
&#13;

我认为在你的情况下你可能最好在ready函数之外定义函数,然后动态地将它绑定到按钮的onclick处理程序。

我还在按钮中添加了一个data-showhide属性,以便将变量传递给showhide函数onclick。

&#13;
&#13;
function showHide() {
  var shID = $(this).data("showhide"); // Use lower case only in data
  if (document.getElementById(shID + '-show').style.display != 'none') {
    document.getElementById(shID + '-show').style.display = 'none';
    document.getElementById(shID).style.display = 'block';
  } else {
    document.getElementById(shID + '-show').style.display = 'inline';
    document.getElementById(shID).style.display = 'none';
  }
}

$(function() {
  $("#example-show").on("click", showHide);
});
&#13;
<a href="#" id="example-show" class="showLink" data-showhide="example">
&#13;
&#13;
&#13;

可以在showHide函数中将cookie设置为特定值。然后,就绪处理程序可以查询cookie并确定是否显示或隐藏div。 这个小提琴在行动http://jsfiddle.net/e52hxosb/19/

中显示了这一点