2012-03-08 61 views
4

寻找一个cookie,当用户点击链接时,它会打开div,然后用户可以刷新页面,看到div仍然打开。如何在jQuery中使用toggle()设置cookie

======= ======= HTML

<a class="show-settings" href="#"></a> 

======== jQuery的=======

$(function() { 
//Toggle Settings 
var s = $("a.show-settings"); 

//On click to toggle settings 
s.click(function() { 
    $("#s4-ribbonrow, #s4-titlerow").toggle(); 
}); 
//Add/Remove text 
s.toggle(function() { 
    //$(this).text("Hide Settings"); 
}, function() { 
    //$(this).text("Show Settings"); 
}); 

回答

0

像这样使用jQuery的饼干和切换

$(document).ready(function() { 
SetView(); 

$('.show-settings').click(function() { 
    $('#s4-ribbonrow, #s4-titlerow').toggle(0, function(){$.cookie('show-settings', $("#s4-ribbonrow:visible")}); 
}); 

function SetView() { 
    if ($.cookie('loginScreen') == 'true') 
    $('#s4-ribbonrow, #s4-titlerow').show(); 
} 
} 
+0

这并没有工作。 – Davis 2012-03-08 17:50:57

+0

这只是在这里被黑了...我没有测试语法是100%。这就是顶端评论使用cookie和回调的原因。 – Hupperware 2012-03-08 17:53:12

+0

反正有没有使用插件? – Davis 2012-03-08 18:01:28

0

我之前使用this jQuery plugin的方法几乎完全相同。这是非常轻量级的,它的文档很容易遵循。

所以,你可以有这样的事情:

// This is assuming the two elements are hidden by default 
if($.cookie('myCookie') === 'on') 
    $("#s4-ribbonrow, #s4-titlerow").show(); 

s.click(function() { 
    $("#s4-ribbonrow, #s4-titlerow").toggle(); 

    // Toggle cookie value 
    if($.cookie('myCookie') === 'on') 
     $.cookie('myCookie', 'off'); 
    else 
     $.cookie('myCookie', 'on'); 
}); 
+0

这没有奏效。 – Davis 2012-03-08 17:50:47

0

你需要jQuery cookie这个工作的回调功能。

$(function() { 
    var $s = $("a.show-settings"); 

    //On click to toggle settings 
    $s.click(function() { 
     var text = $(this).text(); 
     $("#s4-ribbonrow, #s4-titlerow").toggle(); 
     if(text === 'Show Settings') { 
      $s.text('Hide Settings'); 
      $.cookie('is-hidden', null); // remove cookie 
     }else { 
      $s.text('Show Settings'); 
      $.cookie('is-hidden', 'hidden'); // set cookie 
      } 
     return false; 
    }); 
    if($.cookie('is-hidden')) { // If cookie exists 
     $("#s4-ribbonrow, #s4-titlerow").hide(); 
     $s.text('Show Settings'); 
    } 
}); 

HTML(假设设置默认显示)

<a class="show-settings" href="#">Hide Settings</a> 
+0

哎呀,我刚刚意识到这些设置应该默认隐藏。如果需要,我可以解决我的问题。 – shaunsantacruz 2012-03-08 17:47:35

+0

这是最接近的,但它是设置cookie。 – Davis 2012-03-08 17:51:23

+0

仍在寻找答案...有没有反正不使用插件? – Davis 2012-03-08 17:58:07