2015-11-26 2 views
0

Я хочу проверить, является ли объект события потоком определенной оболочки.JQuery имеет() против родителей()

Должен ли я использовать функцию has() или родителей()?

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

против

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

Это до вас. Вы также можете использовать 'ближайшее()'. –

+0

Используйте тот, который вы найдете наиболее читаемым. –

+0

@ FrédéricHamidi Ya, но 'ближайший()' включает сам элемент, поэтому может быть в некоторых конкретных случаях не ожидаемое поведение –

ответ

1

Это до вас. Используйте все, что вы найдете более читаемым или удобным.

Метод три было бы правильно delegation:

$(document).on("click", ".wrapper *", function (e) { 
    // whatever 
}); 
+0

что делать * сделать в этом случае? – user3667832

+1

@ user3667832 выберите любого рода потомков. Но я не уверен, как это связано с вопросом? EDIT: ok я вижу экстраполяцию сейчас :) –

+0

@ user3667832 Читайте о делегировании событий в jQuery. См. Ссылку, добавленную в мой ответ. – Tomalak

Смежные вопросы