2010-08-17 3 views
0

У меня есть следующий код, который работает отлично:Почему jQuery live() не работает?

$('.ui-selectmenu-menu a').click(function() { alert('OK'); }); 

Однако, если заменить его:

$('.ui-selectmenu-menu a').live('click', function() { alert('OK'); }); 

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

Что может быть причиной этого?

(В моем случае, $('.ui-selectmenu-menu a') элементы могут быть удалены и снова добавляли во время бега.)

ответ

1

В случае изменения класса например у родителя нет class="ui-selectmenu-menu, тогда селектор больше не будет соответствовать, убедитесь, что это не происходит после любых событий, которые у вас есть.

В отличие от привязки непосредственно к элементу селектор, который больше не подходит, остановит обработчик .live() от стрельбы по событиям этого элемента.

+0

В моем случае элемент '$ (". Ui-selectmenu-menu ")' удаляется, а затем создается снова (с его дочерними элементами ). Это останавливает .live() на '$ (". Ui-selectmenu-menu a ")' от работы? Какое обходное решение вы бы предложили в моем случае? –

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