2013-04-21 3 views
1
var elms = $('.selector', list); 
elms.off(); 
elms.on('vclick', function(event, ui) { 
     event.preventDefault(); 
     var elm = $(this); 
     customEventHandler(elm, elm.attr("id")); 
}); 

Если я свяжу событие click через $('.selector', list).on('click',...) с элементом в списке, он отлично работает.jQuery .on Нажмите второй раз не работает

Если я добавлю элементы после выполнения .append() в список и снова вызвав $('.selector', list).on('click',...), нажатие не будет нажата. Даже если раньше я использовал .off(), чтобы удалить старые события.

Любые идеи или предложения?

+0

Что такое c.onclick? Это переменная константы? Я думаю, что первое, что нужно для функции .on(), должно быть строкой, которая сопоставляется с именем события. Как «кликнуть». – Jazzepi

+0

Обновлен ли список после добавления элементов? – Omar

+0

Да list.trigger ("create"); после привязки событий ... –

ответ

1

Наконец-то возникла проблема, мне пришлось связывать события после вызова list.trigger («create»); а не раньше, может быть, это полезно для всех ...

5

Попробуйте так: - Fiddle

$('.container').on('click', '.selector', function(event, ui) { 
     event.preventDefault(); 
     var elm = $(this); 
     alert(elm.index()); 
}); 

Вы можете достичь этого, используя delegated events подход.

делегированного событие имеет то преимущество, что они могут обрабатывать событие от элементов-потомков, которые добавляются к документу в более позднее время. Выбирая элемент, который, как гарантируется, присутствует в момент присоединения делегированного обработчика событий, вы можете использовать делегированные события, чтобы избежать необходимости часто присоединять и удалять обработчики событий. Этот элемент может быть элементом контейнера представления в дизайне Model-View-Controller, например, или документом, если обработчик события хочет контролировать все события пузырьков в документе. Элемент документа доступен в начале документа перед загрузкой любого другого HTML-кода, поэтому безопасно присоединять туда события, не дожидаясь готовности документа.

+1

Woah ... Вы быстро! : P –

+0

это шов причина, я проверю делегированный подход к событиям! –

+0

Да, попробуйте заменить клик на Jqmobile vclick. Должен работать – PSL

0

Заменить c.onclick с помощью щелчка. Используйте правильный формат.

$('.container').on('click', '.selector', function(event, ui) { 
    event.preventDefault(); 
    var elm = $(this); 
    alert(elm.index()); 
}); 
+0

Извините, забыл упомянуть, что c.onclick является своего рода константой для JQM vclick. Я редактирую свой пост. –

+0

Хорошо ... Но это работает? –

+0

Нет ... не работает –

Смежные вопросы