【问题标题】:jQuery selector select node without child nodejQuery选择器选择没有子节点的节点
【发布时间】:2012-03-26 02:56:27
【问题描述】:

我怎样才能选择所有.sp_container 没有子级的portlet

这不起作用:div.sp_container[> div.portlet]

<div class='sp_container' style=''>

<div class='portlet' style='background:#ff9900;padding:20px;'>
    <div class='sp_container' >
    </div>
</div>

<div class='portlet' style='background:#ff11aa;padding:20px;'>
    <div class='sp_container' >
    </div>
</div>

<div class='portlet' style='background:#336699;padding:20px;'>
    <div class='sp_container' >
    </div>
</div>

【问题讨论】:

  • 如果您想得到答案,请更具体一点。
  • 你能说得清楚一点吗?您想选择所有没有portlet 父级的sp_container?是吗>
  • 我想获取所有带有 class_name sp_container 的元素,没有包含带有 class_name portlet 的元素。
  • 还是不明白...there no contains是什么意思
  • 对不起,我的英语非常糟糕。我想获取所有不包含元素 .portlet 的元素 .sp_container 作为子元素

标签: jquery css-selectors


【解决方案1】:

根据您的评论,您可以使用filter()。这应该可以。

$('.sp_container').filter(function(){
    return $(this).children('.portlet').length === 0;
});

【讨论】:

  • +1 这对我有帮助。我刚刚用find 替换了children,因为我正在寻找嵌套更深的孩子:)
【解决方案2】:

这将返回没有任何子元素的所有 sp_container 元素,这就是我认为您正在寻找的。​​p>

var myElems = [];

$(".sp_container").each(function() {
    if($(this).children() == undefined) {
        myElems.push(this);
    }
});

【讨论】:

  • &lt;div id='1' class='sp_container' style=''&gt; &lt;div id='2' class='portlet' style='background:#ff9900;padding:20px;'&gt; &lt;div id='3' class='sp_container' &gt; &lt;/div&gt; &lt;/div&gt; &lt;div id='4' class='portlet' style='background:#ff11aa;padding:20px;'&gt; &lt;div id='5' class='sp_container' &gt; &lt;/div&gt; &lt;/div&gt; &lt;div id='6' class='portlet' style='background:#336699;padding:20px;'&gt; &lt;div id='7' class='sp_container' &gt; &lt;/div&gt; &lt;/div&gt; 我需要 id 为 3,5,7 的元素,但不需要 id 为 1 的元素。id 1 包含第一级的子 .portlet
猜你喜欢
  • 2012-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多