jQuery:选择不是特定类后代的所有元素

jQuery:选择不是特定类后代的所有元素

问题描述:

<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>

您能帮我选择所有要素吗?

Can you help me to select all the elements :

  • .container"的后代
  • 不是'.x'的后代
  • 本身没有类".x".

查看上面的HTML;它应选择元素 5、6、7和9

Looking at the HTML above; it should select the elements 5,6,7 and 9

  • 元素1的类为"X"
  • 元素2是具有"X"类的元素(元素1)的直接子元素
  • 元素3和4是子元素"X"(元素1)的后代

元素8的类为"X"

我有这个选择器,但它会继续选择类"X"的元素的后代(深子级)

I have this selector but it keeps selecting the descendants (deep children) of element with class "X"

var elements = $('.container').find().parents(':not(.X)').andSelf().filter(':not(.X)');

这应该做到:

$('.container').find(':not(.x):not(.x *)');

再次恢复为第一个修订版.我以为这种方法行不通,但是您的HTML中有一个错误,该错误使#1成为所有元素的父级,因此未选择任何内容.

Reverted to first revision again. I thought it did not work this way, but you have an error in your HTML which makes #1 parent of all elements, so none is selected.

<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 -->