Ответ 1
if($(target).parents('.wrapper').length > 0) {
//do something...
}
var target = $(this).attr("href");
if {target is child of ('.wrapper')} then (do something)
простой синтаксис? может ли кто-нибудь показать мне правильный синтаксис здесь?
if($(target).parents('.wrapper').length > 0) {
//do something...
}
.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()
Здесь более аккуратный способ: привязать его как плагин jQuery. Возможно, вам будет легче понять и использовать.
$.fn.isChildOf = function(element)
{
return $(element).has(this).length > 0;
}
Использование:
if ( $('.target').isChildOf('.wrapper') ) {
//do all the things.
}
Небольшое изменение кода Джейкоба, если ребенок глубже одного уровня.
if($(target).parents('.wrapper').length) {
//do something...
}
<div class="parent">
<div class="child">
</div>
</div>
$(".child").is(".parent .child")
Не можете ли вы связать другое событие?
$('.wrapper *').click(function() {
// will execute on childrens of .wrapper
});
Я знаю, что это старый пост, но это может быть полезно для кого-то. Мне кажется, что во многих случаях использование .closest() будет иметь лучшую производительность:
if ($(target).closest('.wrapper').length){
// your code here
}