var checkLeft= $('#left .module:hidden');
if(checkLeft) {
if($('.resetLeft').length) {
left.prepend('<span class="resetLeft">Reset Left Widgets</span>');
}
}
尝试使其正常工作时遇到一些麻烦。因为我真的不想要:hidden
伪类,因为我认为IE不支持这个。基本上我做了一个函数,这个代码就在其中。当它运行时,它会检查父元素#left
是否有类display:none
的任何.module
子元素我使用了过滤器函数,并且必须隐藏两个元素以实际正确响应。有什么好主意吗?
这是一个已启动的JSBIN
答案 0 :(得分:2)
(部分)jQuery的观点是它可以跨浏览器工作。 :hidden
在所有浏览器中都充当jQuery选择器 - doco说它“是jQuery扩展,而不是CSS规范的一部分”。
但是,您的if
测试不正确:
if(checkLeft) {
...将永远是真的,因为你正在测试jQuery对象本身 - 对象总是真实的。您需要测试.length
以查看是否有任何元素与您的选择器匹配:
if (checkLeft.length) {
在那之后的那一行你已经使用了同样的技术:
if($('.resetLeft').length) {
...除了那一行你有逻辑向后 - 如果长度为0,你想要它是真的,即如果还没有.resetLeft
元素,那么要么添加!
在.length === 0
的条件或测试开始时:
if(!$('.resetLeft').length) {
最后,left.prepend(...)
无效,因为您没有left
变量。定义它或使用$('#left').prepend(...)
。