jquery добавление события клика к динамически созданному элементу - PullRequest
3 голосов
/ 01 июня 2011

У меня есть необходимость добавить событие click к элементу списка, который я создаю динамически после загрузки DOM.

Я использую;

$("#ListDiv li").live("click",function(event){
  do something......
 });

Однако, когда элемент загружается на страницу и я нажимаю на него, я ничего не получаю.

Это отлично работает в Firefox, но не в IE8.Я также пробовал jquery livequery и deleagte, но ни один не работал.Я попытался отладить с помощью инструментов разработчика IE8, но метод никогда не достигается

Ответы [ 2 ]

10 голосов
/ 01 июня 2011

Используйте .delegate или .live и убедитесь, что вы связываете, как только DOM готов :

$(document).ready(function () {
    $("#ListDiv").delegate("li", "click", function (event) {
        // do something
    });
});

РЕДАКТИРОВАТЬ:

Приведенное выше решение, хотя и остается полностью действительным, теперь устарело / устарело.С тех пор jQuery представил .on() method:

Начиная с jQuery 1.7, метод .on () предоставляет все функции, необходимые для подключения обработчиков событий.

Реализация очень похожа на решение .delegate, опубликованное выше, но помните, что порядок параметров изменился:

$(document).ready(function () {
    $("#ListDiv").on("click", "li", function (event) {
        // do something
    });
});
2 голосов
/ 01 июня 2011

вставьте свой код в документ .ready

 $(document).ready(function() {
       $("#ListDiv li").live("click",function(event){
        do something......
       });
     });
...