<div class="container" id = "0" > <div class="x" id = "1"> <div id = "2"> <p id = "3"> <span id = "4" >text</span> </p> <div> </div> <div id="5"> <div id="6"> <p id="7"> <span class="x" id="8" >text</span> <span id="9">text</span> </p> <div> </div> <div>
你可以帮我选择所有的元素:
>是“.container”的后裔
>不是’.x’的后代
>没有类’.x’本身.
看上面的HTML;它应该选择元素5,6,7和9
>元素1具有类“X”
>元素2是元素与“X”类(元素1)的直接子元素
>元素3和4是后代元素与类“X”(元素1)
元素8具有类“X”
我有这个选择器,但它不断选择元素的后代(深层次的孩子)的类“X”
var elements = $('.container').find().parents(':not(.X)').andSelf().filter(':not(.X)');
解决方法
这应该做到:
$('.container').find(':not(.x):not(.x *)');
编辑:再次恢复为第一次修订.我以为没有这样做,但是你的HTML中有一个错误,这使得所有元素都是#1的父代,所以没有一个被选中.
<div class="container" id = "0" > <div class="x" id = "1"> <div id = "2"> <p id = "3"> <span id = "4" >text</span> </p> <div> <!-- <-- must be a closing div tag --> </div> <div id="5"> <div id="6"> <p id="7"> <span class="x" id="8" >text</span> <span id="9">text</span> </p> <div> <!-- <-- must be a closing div tag --> </div> <div> <!-- <-- must be a closing div tag -->