首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用jQuery获取某个元素的子元素,该元素不是具有某个CSS类的容器的子项。

使用jQuery获取某个元素的子元素,该元素不是具有某个CSS类的容器的子项。
EN

Stack Overflow用户
提问于 2011-11-23 04:46:47
回答 4查看 18.8K关注 0票数 25

我有这样一种情况,我需要选择某个元素的所有子元素,但是排除了那些与运行选择器的容器的CSS类相同的容器的子元素。

相当复杂的描述。

代码语言:javascript
复制
<div class="container">
   <div class="element"></div>
   <div class="element"></div>
   <div class="element"></div>
   <div class="element">
       <div class="container">
           <div class="element"></div>
           <div class="element"></div>
           <div class="element"></div>
       </div>
   </div>

在最外层的DIV上运行jQuery .find('.element')将得到所有的DIV,甚至是第二个容器中的DIV。这就是我想要避免的。

对于这种情况,有没有快速而简单的jQuery选择器解决方案?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-11-23 04:52:29

我认为您要使用的是not选择器。像这样..。

代码语言:javascript
复制
$(".container").not(".container .container")

或者,您可以使用children选择器从一个级别的深度获取子级。这将排除嵌套的div。

更明确地说,我认为在使用'find‘之后,你会想要使用not选择器。如下所示:

代码语言:javascript
复制
$(".container").find(".element").not($(".container .container .element"))

您可以将一个函数传递给not,这样您就可以让该函数查看每个元素的父元素是否匹配,以查看它是否嵌套在具有相同类的元素中。

http://jsfiddle.net/QXfs2/6/

代码语言:javascript
复制
removeIfNested = function(index) {
    // this is the corrent DOM element
    var $this = $(this),
        return_value = false;

    $.each($this.attr('class').split(/\s+/), function(index) {
        if ($this.parents("." + this).length > 0) {
            return_value = default_value || true;
        }
    });

    return return_value;
}


$(".container").find(".element").not(removeIfNested);

如果您可以向嵌套容器添加一个类,那么这将是理想的,那么它只是:

代码语言:javascript
复制
$(".container").find(".element").not($(".nested .element"))

假设你将类“嵌套”添加到你的内部容器div中。

票数 34
EN

Stack Overflow用户

发布于 2011-11-23 04:57:07

对于您的特定示例,这将是可行的-

代码语言:javascript
复制
$("body > div.container > .element")

这将只获得顶级元素div。如果你的元素集合在一个不同的结构中,你可以用集合的容器id替换body

演示- http://jsfiddle.net/QAP37/

票数 2
EN

Stack Overflow用户

发布于 2015-10-29 20:16:54

您可以像这样使用jquery选择器:

代码语言:javascript
复制
find('*:not(.container .container *)')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8233604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档