首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jQuery函数需要单击两次

jQuery函数需要单击两次
EN

Stack Overflow用户
提问于 2011-07-14 19:26:05
回答 2查看 639关注 0票数 0

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

当被展开时(默认情况下是展开的,所以必须先最小化),它需要点击两次,但它看起来只是第一次……

代码语言:javascript
运行
复制
<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>

谢谢你的帮忙

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-14 19:35:18

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

代码语言:javascript
运行
复制
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;
} 

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

票数 4
EN

Stack Overflow用户

发布于 2011-07-14 19:31:00

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6692428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档