#javascript #jquery #jquery-1.7
#javascript #jquery #jquery-1.7
Вопрос:
Я добавляю <li>
и когда я пытаюсь щелкнуть по нему с помощью события new .on, это не работает. Я не хочу использовать .живое событие, поскольку оно может устареть в будущем.
Вот мой пример:http://jsfiddle.net/2Lbbe /
Это работает для первого элемента, если вы создаете новый, оповещение не работает.
Кто-нибудь знает, как я могу решить эту проблему без использования live?
Комментарии:
1. повторный источник: .устаревание в реальном времени?
2.Я поддерживаю Мэтта. Я не вижу, чтобы эта функция выходила из употребления в ближайшее время.
.on()
был представлен в jQuery 0.7, но он ничего не заменяет. Если вы хотите посмотреть, вот единственные устаревшие функции: api.jquery.com/category/deprecated3. Подробности об устаревании находятся прямо в документе jQuery для
.live()
— он устарел с версии 1.7. Между тем,.delegate()
он «заменен» и.bind()
больше не является «предпочтительным». Начиная с версии 1.7, они рекомендуют использовать.on()
вместо всех трех.4. P.S. Смотрите также blog.jquery.com/2011/11/08/building-a-slimmer-jquery
Ответ №1:
Вы совсем близко, все, что вам нужно сделать, это изменить настройки вашего селектора:
От
$("#bxs li").on('click',function() {
Для
$("#bxs").on('click', 'li',function() {
Вот обновление для вашего jsfiddle:http://jsfiddle.net/jasper/2Lbbe/2 /
Использование .on()
функции, подобной этой, аналогично старой .delegate()
функции:
$(elements).delegate(selector, events, data, handler); // jQuery 1.4.3
$(elements).on(events, selector, data, handler); // jQuery 1.7
Ответ №2:
По сути, вы пытаетесь сделать то, что раньше вызывалось .делегировать(). Прикрепите обработчик событий к чему-то постоянному, затем посмотрите внутри на свои цели.
$("#bxs").on('click', 'li',function() {
Из документов:
.on( события [, селектор] [, данные], обработчик)
Описание: Прикрепите функцию обработчика событий для одного или нескольких событий к выбранным элементам.
.on () теперь способен выполнять функции .bind() .live() и .делегировать() в зависимости от того, как он используется. Если вы хотите, чтобы обработчик применялся к будущим элементам, вы должны сделать окончательный выбор, используя необязательный [,selector]