代码之家  ›  专栏  ›  技术社区  ›  timpone

在返回的JSON结果上使用bind(“click”)/添加到DOM

  •  0
  • timpone  · 技术社区  · 14 年前

    所以我尝试了可信的谷歌,但没有找到令人满意的解决方案。基本上,我不确定我所做的是否有效。

    我想进行一个返回JSON结果的Ajax调用。我迭代这个结果,然后写一个这样的字符串,然后推到结果范围(所有这些都可以正常工作):

    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);
    

    然后(顺便说一句,我的意思是在返回结果之前将其编码到页面中)使用类似game-name类绑定一个click事件(此部分不起作用,但对于在开始时手工编码到页面中的某个内容来说很好):

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

    但是返回的结果没有与之相关联的绑定。我如何才能使点击得到响应?有没有一种方法可以触发一个事件,使DOM知道新元素已经添加到了DOM中?或者我只是想知道怎么做?

    谢谢你的帮助

    4 回复  |  直到 14 年前
        1
  •  3
  •   Jordan Ryan Moore    14 年前

    使用 live() 而不是 bind() :

    $(".game_name").live('click', function() {
       alert('here i am');
    });
    
        2
  •  0
  •   Marek Karbarz    14 年前

    你查过jquery的吗 live 事件?它将允许您绑定 click 对于所有动态添加的元素。

        3
  •  0
  •   Guillaume Flandre    14 年前

    使用Live代替:

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

    更多信息: http://docs.jquery.com/Events/live

        4
  •  0
  •   David Hedlund    14 年前

    如果确保在 $('#results').html(str); 行,您的代码应该可以工作,但我认为您最好在这里注册 居住 事件侦听器,它表示“所有与此选择器匹配的项都应绑定到此侦听器,即使在执行此代码后的某个时间点将它们添加到DOM中”:

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