当jquery更改id时,通过id执行jquery函数

时间:2014-09-12 14:59:13

标签: javascript jquery

可以使用此功能更改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被更改时,第二个函数不会运行...

你能帮我吗?

谢谢,

2 个答案:

答案 0 :(得分:2)

您需要使用事件委派:

$("body").on('click','#test2',function() {
 $("#test2").attr('id', 'test');
 alert('test2');
 return false;
});

答案 1 :(得分:0)

事件处理程序绑定到元素本身,而不是像idclass这样的属性。因此,即使您更改了用于绑定事件的属性,处理程序仍将保留元素。

所以在我看来,通过条件检查重用现有的处理程序会更好。例如,

$("#test").click(function () {
  if (this.id == "test") {
    alert('test');
    this.id = 'test2';
  } else {
    alert('test2');
    this.id = 'test';
  }
  return false;
});

无需将额外处理程序绑定到另一个元素。这应该是:

  • 更快(没有延迟冒泡

  • 内存效率高(处理程序数量少

    在谈论具有数百个元素的复杂DOM结构时。