Jquery 选择级别1子元素

Jquery 选择级别1子元素,jquery,jquery-selectors,Jquery,Jquery Selectors,我有以下HTML结构 <div id="el"> ... <div> ... <div class="x"> ... <div> <div class="x"> ... </div> </div> ... </div> ... </div>

我有以下HTML结构

<div id="el">
  ...
  <div>
    ... 
    <div class="x"> 
      ...
      <div>
        <div class="x"> 
         ...
        </div> 
      </div>
      ...
    </div>  
    ...
  </div>


</div>
如何选择.x槽el,但前提是它位于第一级

el>.x它将不起作用,因为.x可以有其他父元素:s


如果不可能,我怎么能忽略父元素具有特定类的.x元素呢?

您可以创建一个函数,该函数循环遍历el中的所有.x元素,并返回那些没有类为x的祖先元素的.x元素

这是一个有效的演示:


您可能希望对jQuery使用children命令,因为它只向下移动1级

$el div.children.x

这将正确地选择它

给定一个表示一组DOM元素的jQuery对象 .children方法允许我们搜索直系子对象 并构造一个新的jQuery对象 从匹配的元素。.find和.children方法是 类似,只是后者只沿地面向下移动一层 DOM树。还请注意,与大多数jQuery方法一样,.children也会这样做 不返回文本节点;获取所有子项,包括文本和注释 节点,使用.contents

该方法可以选择接受相同类型的选择器表达式 我们可以传递给$function。如果提供了选择器,则 元素将通过测试它们是否匹配来过滤


您可以使用两个选择器。一个代表get,另一个代表否定

$('#el .x').not('#el .x .x'); 
它可以是工作。 看一看:


问题是.x可以拥有的父元素的数量是可变的。。。所以我不能这么做:那么你可以用.el.x。。。所有.x in.el都将被选中。只需执行一个“否”,然后。。。像。不是。x。x@GregPettit:在问题中似乎很清楚,目标x元素的祖先类型和数量未知。这个答案特定于具体的代码示例。我们对clear的定义必须有所不同。但是你强迫我重读,事实上,原来的帖子比你的解释更清楚删除原始注释。如果el的祖先碰巧具有x类,则此操作无效。你需要在第二个选择器中包含el。太棒了。这是最好的答案。这不起作用,因为el没有类“.x”的子级。通过添加一个额外的void.children内联,您可以得到与@jessegavin相同的结果。因此,您仍然可以使用$el div.children.x,并且效果会很好。几乎感觉不到它值负1;我没有减去它。也就是说,负号通常意味着这是错误的,直到编辑。如果你不希望像我这样对我不慷慨的人减去它,在回答之前先测试一下-我给-1是因为问题清楚地表明,选择直接的孩子不一定有效。做$el div.children.x没有任何好处……因为它会选择所有的.x元素。这个短语让我很困惑。您想使用el来选择.x。但是,如果它是el的直接后代,则只应选择.x。任何更深的嵌套,您不希望它被选中。对吗?换句话说,在您的示例中,不应该选择类为“x”的div,因为它们都不是el的直接后代?@GregPettit:我不认为这是什么意思,因为如果是这样的话,那么el>.x会工作得很好,因为它不会返回任何元素。但你是对的,措辞中肯定有一些含糊不清的地方。你明白了。第一行表示el>.x可以工作。第二行说那不行。有一个矛盾;x是否可以有其他父元素似乎无关紧要。我只是不明白需要选择什么。@GregPettit:是的,我对.x的第一级的解释可能也不正确。可以是任何在它和el之间没有另一个.x的.x。也许@Alex会给出一些见解。我只希望选择第一个.x后代,而忽略.x的.x后代
$('#el .x').not('#el .x .x');