jQuery – 无法将事件绑定到动态元素?

我来维护一段从服务器下载一些JSON数据的javascript,构建一个新的表行(如$(‘< tr>< / tr'))并将其插入到文档中. 一个节点在某一点上创建如下:

var a = $('<a class="foo" href="#"></a>');

然后,事件就像这样绑定到它:

a.click(function () {
  // yadda yadda

  return false;
});

唯一的问题是这似乎不起作用.也没有通过on()或不推荐的live()进行绑定.处理程序只是“忽略”,从不触发,页面滚动到顶部(由于href =“#”).绑定事件时,该元素已附加到DOM.任何帮助将不胜感激.

想到的一些上下文信息:元素是在迭代数据的循环内创建的,但这不应该是一个问题,除非javascript有一些非常奇怪的东西继续使用作用域,加上我尝试使用该元素的所有其他工作:我可以更改其内容,样式,只有事件绑定不起作用.当然,jQuery版本是1.8.3.

最佳答案
EDITED

应该像这样设置.on()以使用动态创建的元素.另外,请确保使用Jquery 1.8版(最新版本)

此外,如果您不想滚动到顶部,则需要阻止单击的标准操作.

这是一个工作FIDDLE

var a = $('<a class="foo" href="#">ASD</a>');

a.appendTo($("body"));

$('body').on('click', 'a', function(e) {
    e.preventDefault();
    $(this).after('<br/><a class="foo" href="#">ASD</a>');
});

转载注明原文:jQuery – 无法将事件绑定到动态元素? - 代码日志