2012-03-31 92 views
2

如何选择不包含任何元素的元素(使用jQuery)?选择基础元素?

例如,在下面的树:

<div class="a"> 
    <div class="b"> 
     <div class="c"></div> 
    </div> 
    <div class="d"></div> 
    <div class="e">Lorem</div> 
</div> 

只有<div> s的classcd,和e将被选中。

回答

3
$(':not(:has(*))')... 

LIVE DEMO

使用filter函数来做到这一点,请注意> element将在ne xt jQuery版本!

您可以使用此:

$(':empty')... 
:因为在 <div class="e">

使用:empty选择文本节点

$('*').filter(function(){ 
     return $('*', this).length == 0 
    }) 

:empty选择不会在这里工作

docs

描述:选择有没有孩子(包括文本节点)的所有元素。

+1

不适用于'

Lorem
'。 – 2012-03-31 23:07:21

+0

@Derek。检查更新。不错,干净 – gdoron 2012-03-31 23:13:53

+0

这很简单,我理解。 – 2012-03-31 23:21:37

3

试试这个:

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

您还可能能够使用过滤函数内(快)原生访问DOM:如果你想

return this.children.length == 0; 
+2

你刚刚重新发明了轮子...... :) – gdoron 2012-03-31 23:05:49

+0

不是'$('> *',this).length == 0' return'true'? – 2012-03-31 23:06:13

+0

@Derek:你究竟是什么意思? – ThiefMaster 2012-03-31 23:08:55