我一直在拼命想弄清楚为什么.not()在这种情况下不起作用
link: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>
&#13;
答案 0 :(得分:3)
.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>
答案 1 :(得分:0)
.not()
用作当前查询结果的排除过滤器,而不是儿童或其他后代。您的查询仅包含#site
。因此告诉jQuery使用#box
排除.not()
将不会做任何事情。
您的查询如下:
#site
,我们的查询结果仅包含#site
现在#box
,我们的查询不包含#box
,所以不要做任何事情#site