修改后的DOM中的JQuery访问元素

时间:2010-03-19 22:24:23

标签: jquery getjson

从长期来看,我试图在我的dom中使用已添加异步的元素上的事件。 我读过一些关于bind的内容,但有没有不同的方法来建立这样的东西?

例如我有这种情况。

$.getJQUERY(myUrl, {var:value}, function(i, data){
  $.each(data.values, function(value){
      $("body").append('<div id="div_no_'+i+'">'+value+'</div>);
     // Here i dont want to place the EventListeners
  })
});
$("div_no_1").click(function(){
    // do something
});

有人可以帮我找到一种方法来建立这样的东西吗?

提前谢谢

哈德

2 个答案:

答案 0 :(得分:1)

您可以使用.live()点击处理程序,如下所示:

$("div[id^=div_no_]").live('click', function(){
  // do something
});

这会侦听来自ID为div_no_

的ID的现有元素或新元素的点击次数

您只需要这一次,它将适用于您创建的所有div。

杰森的评论对你的情况也很有意义,如下:

$.getJQUERY(myUrl, {var:value}, function(i, data){
  $.each(data.values, function(value){
      $("body").append('<div id="div_no_'+i+'" class="clickme">'+value+'</div>');
  })
});

$(".clickme").live('click', function(){
  // do something
});

答案 1 :(得分:0)

这是Nick的回答,可以帮助您更好地理解jQuery和Javascript:

$.getJQUERY(myUrl, {var:value}, function(i, data){
  $.each(data.values, function(value){
      var myDiv = document.createElement('div');
      $(myDiv).id('div_no_' + i).addClass('clickme').text(value);
      $('body').append(myDiv);
  })
});

$(".clickme").live('click', function(){
  // do something
});

这样做的好处是,如果您决定在将来进行更改/更新,它会更加模块化。例如,如果您决定不再希望它为div,您可以简单地将创建的元素类型更改为span,这是您需要的唯一更改make(在此示例中授予变量称为myDiv,但希望您将变量命名为更好:)。基本上,你不是直接渲染HTML,而是抽象它,以便jQuery / JS可以为你做繁重的工作。

不要试图窃取尼克的雷声,只是提供一个替代的,教学的例子。