0

长期以来,我一直在尝试在我的 dom 中添加了异步的元素上使用事件。我读过一些关于绑定的东西,但是有没有不同的方式来建立这样的东西?

例如我有这种情况。

$.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
});

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

先感谢您

伟大的

伯恩哈德

4

2 回答 2

1

您可以使用这样的.live()点击处理程序:

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

这会侦听来自 ID 以开头的现有或新元素的点击div_no_

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

Jason 的评论对您的情况也很有意义,如下所示:

$.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
});
于 2010-03-19T22:30:22.967 回答
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
});

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

不是想抢走尼克的风头,只是提供一个替代的教学例子。

于 2010-03-20T19:15:41.757 回答