Добавление клика в динамически сгенерированные div-ы Jquery - PullRequest
0 голосов
/ 05 декабря 2011

Я создаю группу Div на основе числовых элементов в массиве, которые я получаю из AJAX. Все div имеют уникальный Id, и я хочу добавить событие Click для каждого из сгенерированных Div. Я хочу, чтобы пользователь щелкнул один из сгенерированных элементов div, который затем опубликует некоторые данные. Это код, который я использую, но он не работает.

c=data.length

            for(i=0;i<c;i++){

                $('#result').prepend('<div class="validation" id="lv_'+i+'">'+data[i]+'</div> ');
                $("#lv_"+i).live('click', function(data){
                .$post("setLocation", {lv: lv}, function(data){
                    alert(data);
                });
            });

        } 

Ответы [ 2 ]

1 голос
/ 05 декабря 2011

Чтобы определенный обработчик событий срабатывал на всех div, которые имеют класс validation, независимо от того, добавлены они динамически или нет, в идеале вы должны использовать on

$(document).on("click", ".validation", function() {} );

Если вы используете более старую версию jQuery, вот как вы бы это сделали с live:

$(".validation").live("click", function() {} );

Или лучше, чем live будет delegate

$(document).delegate(".validation", "click", function() {} );

Причина, по которой delegate и on предпочтительнее live, заключается в том, что live пройдет через существующий домен и прикрепит соответствующий обработчик ко всем обнаруженным элементам. delegate и on просто прослушивают всплывающие события и запускают обработчик, когда селектор совпадает. В результате delegate и on более производительны.

0 голосов
/ 05 декабря 2011

Попробуйте:

$("#lv_"+i).on("click", {lv: lv}, function(data))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...