Подтвердить что ты не робот

Jquery: if (target) является дочерним элементом ('.wrapper'), то (что-то делать)

var target = $(this).attr("href");

if {target is child of ('.wrapper')} then (do something)

простой синтаксис? может ли кто-нибудь показать мне правильный синтаксис здесь?

4b9b3361

Ответ 1

if($(target).parents('.wrapper').length > 0) {
   //do something...
}

Ответ 2

.has() - это, возможно, удобный синтаксис:

if( $('.wrapper').has($(target)) ) {
     // do something
}

Еще более "мощный" (с точки зрения производительности) - $.contains(). Поэтому идеальный алгоритм должен выглядеть так:

var $wrapper =  $('.wrapper'),
    $target  =  $(this).attr('href');

if( $.contains($wrapper[0], $target[0]) ) {
    // do something
}

Ссылка: . has(), $. contains()

Ответ 3

Здесь более аккуратный способ: привязать его как плагин jQuery. Возможно, вам будет легче понять и использовать.

   $.fn.isChildOf = function(element)
{
    return $(element).has(this).length > 0;
}

Использование:

    if ( $('.target').isChildOf('.wrapper') ) {
      //do all the things.
    }

Ответ 4

Небольшое изменение кода Джейкоба, если ребенок глубже одного уровня.

if($(target).parents('.wrapper').length) {
   //do something...
}

Ответ 6

<div class="parent">
    <div class="child">
    </div>
 </div>


$(".child").is(".parent .child")

Ответ 7

Не можете ли вы связать другое событие?

$('.wrapper *').click(function() {
    // will execute on childrens of .wrapper
});

Ответ 8

Я знаю, что это старый пост, но это может быть полезно для кого-то. Мне кажется, что во многих случаях использование .closest() будет иметь лучшую производительность:

if ($(target).closest('.wrapper').length){
    // your code here
}