1

我有这个 html:

<div id="container1">

    <div id="container3">
        <div class="item"></div>
        <div class="item2"></div>
    </div>

    <div class="item"></div>
    <div class="item2"></div>

    <div id="container2">
        <div class="item"></div>
        <div class="item"></div>
        <div class="item2"></div>
    </div>

<div>

使用 jQuery,是否有一种(简单的)方法来搜索 div .item,但屏蔽了里面的所有结果#container2

理想情况下,我想要类似的东西$(#container1).mask('container2').find('.item'),即一个透明的解决方案,您可以将其与任何其他查询一起使用,而无需知道您正在使用它。例如 :

// where queryExcludingContainer2 could be `$(#container1).mask('container2')` if the `mask` function existed
queryExcludingContainer2.find('.item')
queryExcludingContainer2.find('.item2')

有这样的“屏蔽”功能吗?

4

5 回答 5

2

你的意思是这样的?

jsFiddle 示例

$('div').not('#container2').children('.item')

更多信息: jQuery API 文档not()

于 2013-05-24T10:05:03.333 回答
1

我认为你需要使用children()

示例JS 小提琴

$("#container1").children(".item").css('font-style', 'italic');
于 2013-05-24T10:02:18.743 回答
1

您可以使用 ":not" 选择器 http://api.jquery.com/not-selector/

$('.item:not(#container2 *)')
于 2013-05-24T10:04:06.147 回答
0

我想,你可以space-bar这样使用:

$('#container1 .item')

而且,如果.item元素#container1直接在下面,你也可以使用这个:

$('#container1 > .item')
于 2013-05-24T10:02:20.617 回答
0

我认为你可以使用filter().

于 2013-05-24T10:04:24.603 回答