我有几个动态生成的HTML元素,每个元素都使用自己的动态id作为类名。我有这样的元素附加事件监听器:
$(document).on("click", ".id_" + dynamic_id , clickCallback);
问题是动态id可以通过ajax成功调用进行更改,并且相应的HTML元素更新如下:
$(".id_" + old_dynamic_id).attr("class", new_dynamic_id);
此更改将使先前附加的事件侦听器丢失,因为它不知道HTML元素现在具有已分配的新ID。
处理此问题的干净方法是什么?我可以在ajax成功函数中重新附加事件监听器,但这并不理想,因为将有两个地方存在相同的事件监听器代码:创建元素时和ajax成功函数内部。
答案 0 :(得分:1)
你可以试试这个:
$(document).on("click", "[class^='id_']", clickCallback);
答案 1 :(得分:0)
这似乎有效:
$(".link").on("click", function() {
alert("yes");
});
$(".link").attr("class", "new-class");
即。如果事件直接附加到元素上。