jQuery函数需要点击两次

时间:2011-07-14 11:26:05

标签: jquery

如果您访问我们的某个网站; http://skateboardingphoto.co.uk,您会看到顶部有一个导航栏,可以隐藏或展开。

在展开时(默认情况下展开,因此必须先进行最小化),需要点击两次,但这似乎只是第一次......

<script type="text/javascript">
jQuery(document).ready(function() {
    jQuery(".open-close").click( function() {
        if (jQuery("#openClose").is(":hidden")) {
            jQuery("#navigation-wrap").removeClass("closed").addClass("open")
                    .animate({ 
                    marginLeft: "0px"
                }, 500 );
            jQuery.cookie('navbar', 'open', { expires: 1, path: '/' });
            jQuery("#openClose").show();
        } else {
            jQuery("#navigation-wrap").removeClass("open").addClass("closed")
                    .animate({ 
                    marginLeft: "-330px"
                }, 500 );
            jQuery.cookie('navbar', 'closed', { expires: 1, path: '/' });
            jQuery("#openClose").hide();
        }
    });  
});
</script>

感谢您的帮助

2 个答案:

答案 0 :(得分:4)

这是因为您在cookie中保存工具栏的状态,并且根据cookie,用户可以看到隐藏或展开的工具栏。我认为处理cookie的代码是这一个(添加我指出的行):

jQuery(document).ready(function() {
   var navbarstatus = jQuery.cookie('navbar');
   if (navbarstatus == 'closed') {
     jQuery("#navigation-wrap").css("margin-left", "-185px");
     jQuery("#openClose").hide();//add this line

   } else {
   return false;
} 

如果在初始化工具栏时没有隐藏该div,则第一次单击它时jQuery("#openClose").is(":hidden")将返回false并执行代码的第二部分(隐藏("#openClose"))等等第二次点击一切都是正确的。

答案 1 :(得分:1)

是浏览器特定的吗?最常见的原因是初始状态不正确 - 它适用于FF。

在特定浏览器中第一次检查是否正确拾取了(:hidden)。

相关问题