на jQuery.on () с несколькими селекторами в делегировании событий?

Я с помощью .on() в jQuery 1.7 и интересуется, можно ли прикрепить несколько селекторов одновременно для элементов, которые были введены на странице. Ранее я использовал live() - но очевидно, почему я хочу двигаться с учетом улучшения производительности.

можно использовать .on() в Таким образом:

$(document).on('click', '#selector1, #selector2, .class1', function () { 
     //stuff
});

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

?

2 ответов


  1. можете ли вы использовать .on () в манере:

    $(document).on('click', '#selector1, #selector2, .class1', function () { 
        //stuff
    });
    

    Да, это сработает.

  2. Я хочу использовать это вместо live() учитывая улучшения производительности.

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

  3. и есть ли какие-либо преимущества, потерянные в приложении к документу?

    обратная сторона привязки к document это то, что событие должно пройти весь список предков, прежде чем оно будет обработано; это, как указано в документации jQuery, это самый медленный маршрут. Лучше будет обрабатывать событие раньше, подключив обработчик к элементу ближе к источнику событие.


это возможно, и "это" - это щелкнутый селектор, а не документ.

вам лучше прикрепиться к ближайшему родительскому элементу вашего селектора. Когда вы нажимаете "#selector1", событие всплывает до элемента обработчика событий, здесь: документ.

чем больше слоев, тем больше действий. Более того, если между selector1 и document есть другой обработчик событий click, его можно перехватить с помощью event.stopPropagation();, и никогда не достигайте события "документ" обработчик.

вы можете проверить rogue событие "перехват"в этой скрипку.