Как я могу узнать, является ли элемент прямым потомком тела с помощью jQuery - PullRequest
4 голосов
/ 07 июня 2010

Я хочу выполнить какое-то действие над элементами, которые не являются прямым потомком тела. Как я могу проверить определенный элемент, чтобы узнать, является ли его компонент телом.

Спасибо!

Ответы [ 5 ]

13 голосов
/ 07 июня 2010

Вы можете проверить имя тега следующим образом:

jQuery('#urDivId').parent().is('body')
3 голосов
/ 07 июня 2010

> обозначает прямого ребенка.$('body > *') дает вам все дочерние элементы тега body, так что вы всегда можете инвертировать его с помощью :not( ): $('*:not(body > *)');однако это может быть довольно медленным.

filter( ) также будет работать для вас и может быть быстрее: $('body *').filter(function(){ return $(this).parent('body') });

Любой из вышеперечисленных должен дать вам полный набор всех элементов, которыене потомки тега body.

Обратите внимание, что здесь может быть выбрано огромное количество элементов;вы захотите сделать свои селекторы как можно более конкретными для производительности, и вам, вероятно, следует избегать подстановочных знаков, которые я использовал для приведенных выше примеров.

1 голос
/ 07 июня 2010
if ( $(this).parent()[0].nodeName.toLowerCase() == "body" ) 
{
// do stuff here
}
1 голос
/ 07 июня 2010

просто вы можете использовать родительскую функцию jquery('#yourElement').parent(); , если она дает вам тег body, чем вы можете обнаружить, что он является прямым потомком тела.

0 голосов
/ 07 июня 2010

много хороших ответов. Если вы заинтересованы в создании цепочки, здесь есть еще одна возможность, которая использует parent () и селектор : not () .

var $possible_targets = [...]; // all the elements you want to check
function do_something_to_target() { 
    [...]; // insert blinking text code here! 
}

$possible_targets.parent(':not(body)').each(do_something_to_target);
...