【问题标题】:jquery click event puzzlejquery点击事件拼图
【发布时间】:2009-10-23 16:35:08
【问题描述】:

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

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

$(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 个(十个!)警报 - 但它们都显示我实际单击的标签的 ID。

(如果我单击第 5 个标签,是的,我会收到 5 个警报 - 都带有第 5 个标签的 id...)

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

这是创建 a 标签的代码

$(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 输出显示没有任何奇怪的外观。

知道这里发生了什么吗?

谢谢

【问题讨论】:

  • 您能否发布导航 div 的代码。我的意思是,右键单击并显示源代码。所以我可以看到链接代码。请

标签: jquery events click


【解决方案1】:

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

【讨论】:

  • "那么只要确保您将点击事件绑定在您可能拥有的任何循环之外"...就是这样!我正在按照您所说的进行 - 在 $.each() 中进行绑定。非常感谢
猜你喜欢
  • 2017-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-17
  • 2011-10-13
  • 2012-09-10
相关资源
最近更新 更多