如果两个元素的id-s都已知,是否有可能选择一个元素,但没有嵌套在其中的元素之一?
喜欢:
<div id="outerdiv">
<div>
<div id="innerdiv1"> </div>
<div id="innerdiv2"> </div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我想做一个选择哪个会返回outerdiv但没有像这样的innerdiv2:
<div id="outerdiv">
<div>
<div id="innerdiv1"> </div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
有没有像$('#outerdiv')那样的声明.不是('#innerdiv2')还是可以做到这一点的东西?我可以使用clone()+ remove()解决这个问题,但我只是徘徊是否有机会这样做..
谢谢
这个给你,
$('#outerdiv div:not(#innerdiv2)')
Run Code Online (Sandbox Code Playgroud)
包括外部div:
$('#outerdiv div:not(#innerdiv2),#outerdiv')
Run Code Online (Sandbox Code Playgroud)
它实际上是一个有效的CSS3选择器,它也适用于jQuery.
为了回答你的评论,我在浏览器控制台上进行了一些测试:
a = $('<div id="a"><div id="wrap"><div id="one"></div><div id="two"></div></div>')
a.find('div:not(#two)').addClass('a')
Result:
<div id=?"wrap" class=?"a">?
<div id=?"one" class=?"a">?</div>?
<div id=?"two">?</div>?
</div>?
Run Code Online (Sandbox Code Playgroud)
该html()方法打印所选堆栈的第一个匹配元素的HTML内容.您选择的堆栈类似于:[#outerdiv,div,#innerdiv1].所以html()将显示html #outerdiv.如果您需要生成HTML #innerdiv2,则需要将其分离:
$('#innerdiv2').detach()
$('#outerdiv').html()
Run Code Online (Sandbox Code Playgroud)