jquery点击事件拼图

时间:2009-10-23 16:35:09

标签: jquery events click

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

我动态创建一堆标签,将它们附加到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输出显示没什么奇怪的。

知道这里发生了什么吗?

由于

1 个答案:

答案 0 :(得分:2)

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