2013-05-03 4 views
1

Метод .on() в jQuery будет либо соответствовать совпадающему элементу, если не указан селектор, а только его дочерние элементы, если это селектор.jQuery.on() как самостоятельно, так и дети

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

Пример: http://jsfiddle.net/mwvdlee/YFF2k/

ответ

2

Вы можете просто связать обработчик события к родителю и использовать event.target[docs] для получения фактического целевого элемента события:

$('.foo').on('click', function(event) { 
    console.log('click', event.target); 
}); 

Поскольку события пузыриться (это как событие делегации работает в первую очередь), каждый щелчок по потомку .foo вызовет обработчик события .foo (если событие не было остановлено, как-то конечно).

0

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

DEMO: http://jsfiddle.net/YFF2k/2/

$('.foo').on('click', function (e) { 
    console.log('click', e.target); 
}); 
0

вы можете попробовать что-то вроде:

$('.foo').children().andSelf().on('click', function (event){ 
    //something 
});