可以使用此功能更改html balise的id:
$("#test").attr('id', 'test2');
我的例子是:
$("#test").click(function() {
$("#test").attr('id', 'test2');
alert('test');
return false;
});
$("#test2").click(function() {
$("#test2").attr('id', 'test');
alert('test2');
return false;
});
第一个函数正常工作,但是当id被更改时,第二个函数不会运行...
你能帮我吗?
谢谢,
答案 0 :(得分:2)
您需要使用事件委派:
$("body").on('click','#test2',function() {
$("#test2").attr('id', 'test');
alert('test2');
return false;
});
答案 1 :(得分:0)
事件处理程序绑定到元素本身,而不是像id
或class
这样的属性。因此,即使您更改了用于绑定事件的属性,处理程序仍将保留元素。
所以在我看来,通过条件检查重用现有的处理程序会更好。例如,
$("#test").click(function () {
if (this.id == "test") {
alert('test');
this.id = 'test2';
} else {
alert('test2');
this.id = 'test';
}
return false;
});
无需将额外处理程序绑定到另一个元素。这应该是:
更快(没有延迟冒泡)
内存效率高(处理程序数量少)
在谈论具有数百个元素的复杂DOM
结构时。