这是一篇包含更多信息的重复帖子......

我动态创建一堆标签,将它们附加到I然后添加一个点击处理程序......

$(document).ready(function(){
    // ... code to append <a> tags to nav div        
    $("#nav a").click(function(event){ 
       alert('Clicked '+event.target.id);
       return false;
    });
});

如果我有10个标签,并点击第一个,我会得到10个(TEN!)警报 - 但它们都显示我实际点击的标签的ID。

(如果我点击第5个标签,是的,我收到5个警报 - 所有第5个标签的ID ...)

这里发生了什么?是因为我动态创建了标签吗?有没有办法避免它?

以下是创建标签的代码

$(document).ready(function(){
  $.get('_7day-M2.5.xml', {}, function(xml){
    $(xml).find('entry').each(function(i){
      $('#nav').append('<a href="#" id="'+i+'">'+$(this).find("title").text()+"</a><br/>");
    });
  });
});

Firebug输出显示没什么奇怪的。

知道这里发生了什么吗?

由于

有帮助吗?

解决方案

尝试使用$(&quot; #nav&gt; a&quot;)作为您的选择器而不是$(“#nav a”)。如果这不起作用,那么只需确保将click事件绑定到您可能具有的任何循环之外。例如,如果您在创建锚标记时的$ .each()内部有click事件绑定,那么它将创建多个单击事件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top