.по щелчку для динамически созданного элемента

#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/deprecated

3. Подробности об устаревании находятся прямо в документе jQuery для .live() — он устарел с версии 1.7. Между тем, .delegate() он «заменен» и .bind() больше не является «предпочтительным». Начиная с версии 1.7, они рекомендуют использовать .on() вместо всех трех.

4. P.S. Смотрите также blog.jquery.com/2011/11/08/building-a-slimmer-jquery

5. 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]