Выберите базовые элементы? - PullRequest
2 голосов
/ 01 апреля 2012

Как выбрать элементы (используя jQuery), которые не содержат элементов?

Например, в следующем дереве:

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

Только <div> s с *Будут выбраны 1007 * c, d и e.

Ответы [ 2 ]

3 голосов
/ 01 апреля 2012
$(':not(:has(*))')...

LIVE DEMO

Если вы хотите сделать это с помощью функции filter, помните, что > element будет устаревшим в следующих версиях jQuery!

Вы можете использовать это:

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

Селектор

:empty не будет работать здесь, потому что в <div class="e">

есть текстовый узел

используйте селектор :empty:

$(':empty')...

* 1027 документов *:

Описание: выбрать все элементы, у которых нет дочерних элементов (включая текстовые узлы).

3 голосов
/ 01 апреля 2012

Попробуйте:

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

Вы также можете использовать (более быстрый) собственный DOM-доступ внутри функции фильтра:

return this.children.length == 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...