используя bind ('click') для возвращенного результата json / добавление в DOM - PullRequest
0 голосов
/ 04 декабря 2009

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

Я хочу сделать вызов ajax, который возвращает результат JSON. Я перебираю этот результат и пишу такую ​​строку и нажимаю на #results span (все это прекрасно работает):

var str='';
for (var n=0;n<data.length; n++){
    str=+"<div class='game_name'>" + data[n]['name']+"</div><div class='game_id'>"+ data[n]['id'] +"</div>";

}
$('#results').html(str);

, а затем (под, я имею в виду, что это закодировано на странице до того, как будут возвращены результаты), связать событие click с помощью класса game_name, как этот (эта часть не работает, но отлично работает для чего-то, что закодировано вручную на странице в начало):

$(".game_name").bind('click',function(){
   alert('here i am');
});

Но возвращенные результаты не имеют привязки, связанной с этим. Как сделать так, чтобы на клики реагировали? Есть ли способ вызвать событие, чтобы DOM знал, что в DOM были добавлены новые элементы? или мне просто не хватает как это должно работать?

спасибо за любую помощь

Ответы [ 4 ]

3 голосов
/ 04 декабря 2009

Используйте live() вместо bind():

$(".game_name").live('click', function() {
   alert('here i am');
});
0 голосов
/ 04 декабря 2009

Если вы убедитесь, что связывание выполняется после строки $('#results').html(str);, ваш код должен работать, но я думаю, что вам может быть лучше, если вы зарегистрируете прослушиватель событий live , который говорит "все элементы" соответствующие этому селектору, должны быть привязаны к этому слушателю, даже если они добавлены в DOM в какой-то момент после выполнения этого кода ":

$(".game_name").live('click',function(){
   alert('here i am');
});
0 голосов
/ 04 декабря 2009

Вместо этого используйте live:

$(".game_name").live('click',function(){
   alert('here i am');
});

Подробнее: http://docs.jquery.com/Events/live

0 голосов
/ 04 декабря 2009

Вы смотрели на событие jQuery live? Это позволит вам связать click для всех динамически добавляемых элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...