通过更改HTML元素上的动态类名来处理事件侦听器?

时间:2013-11-24 07:46:31

标签: javascript jquery html

我有几个动态生成的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成功函数内部。

2 个答案:

答案 0 :(得分:1)

你可以试试这个:

$(document).on("click", "[class^='id_']", clickCallback);

答案 1 :(得分:0)

这似乎有效:

$(".link").on("click", function() {
    alert("yes");
});
$(".link").attr("class", "new-class");

即。如果事件直接附加到元素上。

http://jsfiddle.net/5ru2W/