当我追加html元素时,它会覆盖点击功能

时间:2011-09-23 22:31:49

标签: javascript jquery click override bind

this.div=$j("<div class='test' id='test"+this._x+"'>"+this.getHtml(inner)+"<a id='testa"+this._x+"''>Close</a></div>");
    this.div.hide().appendTo($j("body")).fadeIn(100);
    this.div.children("#testa"+this._x).bind('click', function(){
          alert(this._x);
   });
构造函数中的

this._x = x;
x++;

当我点击testa他给我这个._x最后x号 是否有覆盖?

2 个答案:

答案 0 :(得分:2)

是的,JS事件与元素本身有关。如果删除并重新创建一个元素,处理程序就会使用它。您可以重新连接它们,也可以使用jQuery的.live()功能。

答案 1 :(得分:0)

事件监听器中的

this._x指向(A._x)的非存在属性。

this.div=$j("<div class='test' id='test"+this._x+"'>"+this.getHtml(inner)+"<a id='testa"+this._x+"''>Close</a></div>");
    this.div.hide().appendTo($j("body")).fadeIn(100);
    var newX = this._x;
    this.div.children("#testa"+this._x).bind('click', function(){
          alert(newX);
   });