на jQuery.on () с несколькими селекторами в делегировании событий?
Я с помощью .on()
в jQuery 1.7 и интересуется, можно ли прикрепить несколько селекторов одновременно для элементов, которые были введены на странице. Ранее я использовал live()
- но очевидно, почему я хочу двигаться с учетом улучшения производительности.
можно использовать .on()
в Таким образом:
$(document).on('click', '#selector1, #selector2, .class1', function () {
//stuff
});
и есть ли какие-либо преимущества, потерянные в приложении к документу ?
?
2 ответов
-
можете ли вы использовать .on () в манере:
$(document).on('click', '#selector1, #selector2, .class1', function () { //stuff });
-
Я хочу использовать это вместо
live()
учитывая улучшения производительности.здесь нет преимущества использования этого кода, в отличие от использования
live()
, aslive()
сам привязывает события к документу, а в jQuery 1.7 живые вызовыon
за кулисами. -
и есть ли какие-либо преимущества, потерянные в приложении к документу?
обратная сторона привязки к
document
это то, что событие должно пройти весь список предков, прежде чем оно будет обработано; это, как указано в документации jQuery, это самый медленный маршрут. Лучше будет обрабатывать событие раньше, подключив обработчик к элементу ближе к источнику событие.
это возможно, и "это" - это щелкнутый селектор, а не документ.
вам лучше прикрепиться к ближайшему родительскому элементу вашего селектора. Когда вы нажимаете "#selector1", событие всплывает до элемента обработчика событий, здесь: документ.
чем больше слоев, тем больше действий. Более того, если между selector1 и document есть другой обработчик событий click, его можно перехватить с помощью event.stopPropagation();
, и никогда не достигайте события "документ" обработчик.
вы можете проверить rogue событие "перехват"в этой скрипку.