[英]Why doesn't .not() work in this case?
我一直在拼命试图弄清楚为什么.not()在这种情况下不起作用
链接: http : //jsfiddle.net/Kr8SA/4/
谢谢您的帮助。
$('#site').not('#box') .fadeIn();
#site { display: none; } div { border: 2px solid black; width: 300px; height: 300px; } #box { background: gray; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="site"> <div id="box"></div> <div></div> </div>
.not
函数不会在给定集合的所有后代中搜索。 它从集合中过滤元素。 由于$('#site').length == 1
,它将无法正常工作。
两种选择是
$('#site *').not('#box')
$('#site').find('*:not(#box)')
$('#site *').not('#box').fadeIn()
/* Hide the elements we'll fade in */ #site *{ display: none; } div { border: 2px solid black; width: 300px; height: 300px; } #box { background: gray; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="site"> <div id="box"></div> <div>Something to show</div> </div>
.not()
用作当前查询结果的排除过滤器,而不是子级或其他后代。 您的查询仅包含#site
。 因此,告诉jQuery使用.not()
排除#box
不会执行任何操作。
您的查询内容如下:
#site
,我们的查询结果现在仅包含#site
#box
,我们的查询不包含#box
所以什么也不做 #site
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.