2013-05-07 1 views
0

Может кто-нибудь объяснить это? Мой код работает правильно, теперь, когда я использую .delegerate, но я понятия не имею, почему я должен его использовать. У меня есть созданный ajax элемент с классом «ajaxDiv». Когда я использую .live, я не получаю предупреждение. Весь код, который я написал после этой функции, также не будет работать..delegate works, .live - нет. Зачем?

$(".ajaxDiv").live("click", function(event){ 
    alert('I don\'t work.') 
}); 

Но когда я делаю это так, это работает.

$("body").delegate(".ajaxDiv", "click", function(){ 
    alert('I work like a charm!') 
}); 

Спасибо!

ответ

0

Live устарел в jQuery.

Начиная с jQuery 1.7, метод .live() устарел. Используйте .on() для присоединения обработчиков событий. Пользователи более старых версий jQuery должны использовать .delegate() в предпочтении .live(). Код: http://api.jquery.com/live/

+0

Это амортизируется не сделал бы его прекратить работу, однако он является удалил бы. –

+0

Это правильно. TwiNight предоставил полный ответ. Однако все, что попадает в личную, больше не должно использоваться. –

3

Я думаю, вы используете jQuery 1.9? .live() удален.

В то же время вы можете использовать Migrate Plugin для восстановления .live() или продолжить использовать .delegate().

Однако для обеспечения лучшей совместимости перед переносом используйте .on(). Просто переключите первые 2 аргумента .delegate()

0

.live был удален в jQuery 1.9. .delegate еще не удален. На самом деле, это не рекомендуется, но его использование было заменено .on (.delegate documentation). Я хотел бы предложить, что вы используете .on для всех привязок включая делегирование событий.

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

  • Нет связанных вопросов^_^