jQuery的toggleClass如果另一个元素是可见的

问题描述:

我有一个项目使用jQuery 1.11.2.1jQuery的toggleClass如果另一个元素是可见的

哪里这个jQuery语句,没有任何问题的工作:

$(document).ready(function() { 
    $(".clickme").click(function(){ 
     $("#menu").toggleClass("fixed", $($("#panel").is(":visible"))); 
     $("#panel").slideToggle(); 
    }); 
}); 

后,我搬到了jQuery的1.11.3.2 浏览器每当我点击“.clickme”按钮时会冻结,并要求我阻止挂起时间过长的脚本(jquery)。

我不得不删除可见状态以避免浏览器挂:

$(document).ready(function() { 
    $(".clickme").click(function(){ 
     $("#menu").toggleClass("fixed"); 
     $("#panel").slideToggle(); 
    }); 
}); 

问题是我需要检查#panel元素的可见性。

元素#panel默认状态为显示:无

问题存在于所有的浏览器,我可以检查。

第一个例子几乎是正确的,不同之处在于你将一个布尔值(从.is())放入一个jQuery对象中。该布尔值需要直接作为toggleClass方法的参数。试试这个:

$(".clickme").click(function(){ 
    $("#menu").toggleClass("fixed", $("#panel").is(":visible")); 
    $("#panel").slideToggle(); 
}); 

More info on toggleClass()

+0

罗里嗨,你的建议是工作的罚款。我可以问问你为什么升级前工作吗? (这是一个WordPress的网站)。看这里,以前的版本:http://greenparkmadama.it/该脚本是http://greenparkmadama.it/wp-content/themes/greenparkmadama/js/greenparkmadama.js?ver=0.7第21行 – bluantinoo

+0

老实说,我不知道。它真的不应该是。这可能是一个固定的错误。我没有检查版本说明以查看版本之间的变化。 –

+0

这很奇怪!此外,情况是错误的:我需要检查它是否隐藏,而不是如果它是可见的!我在2年前制作了这个剧本,并且一直工作到现在。如痴如醉! ;)无论如何非常感谢 – bluantinoo