我正在尝试在动态生成的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插件。
答案 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元素。您可以使用document
或body
。示例:
$('body').on('click', 'li a.my_class', function() {
// Your code here
});