动态生成的元素在jQuery中动态生成的元素中的事件绑定

时间:2012-11-28 08:42:00

标签: javascript jquery

我正在尝试在动态生成的DOM上使用“click”。我知道我可以使用live或on,但是我动态生成的内容在多个动态生成的内容中,并且live / on不再有效。

所以我的代码看起来像这样,但在El_b之前有更多的元素:

El_a = document.createElement("li");
El_b = document.createElement("a");
El_b.id = "myEl";
El_a.appendChild(El_b);

有没有办法让这项工作?

PS:我也尝试过livequery jQuery插件。

2 个答案:

答案 0 :(得分:1)

就委托而言,您始终可以使用至少一个静态DOM元素,即document。如果找不到要委托的更接近的元素,请委托给它。

但是,这里似乎没有必要进行授权。创建元素和附加侦听器的整个过程可以简化为:

var a = $("<li/>").append($("<a/>").attr("id", "myElement")).click(function () {
    alert('hello');
});

如果如您所说,您无法更改对象创建,您仍然可以通过其ID选择它并附加监听器:

$('#myElement').click(function () {
    alert('hello');
});

另外,那些是文档片段,而不是正确的文档,当然也不是DOM。

答案 1 :(得分:1)

如果你想在El_b上的click事件上绑定一个函数,你可以这样做:

$(El_b).click(function() {
    // Your code here
});

但我认为你可以使用on。即使您创建多个DOM元素。您可以使用documentbody。示例:

$('body').on('click', 'li a.my_class', function() {
    // Your code here
});