2013-11-24 38 views
0

下面是一個小部件的片斷:的jQuery插件:連接到特定的元素事件

(function($){ 
    var ele,_this; 
    $.widget('test.mywidget',{ 
     _loadComments:function(d) 
     { 
      $.each(d,function(k,v){ 
      var p=$('<div/>').addClass('comment').attr('id',v.id);   
      p.append("<textarea class='ui-border' onkeypress='_this._submitReply()'></textarea>"); 
      ele.find('.prevComments').append(p); 
      }); 
     }, 
     _submitReply:function(){} 
     _attachEvent:function() 
     { 
      ele.on('change','textarea',function(){ 
       alert('ta pressed'); 
      }); 
     } 
    _create:function(){ 
     ele=this.element; 
     _this=this;   
     this._loadComments(somedata);   
     this._attachEvent(); 
    } 
}); 
}); 

的問題是,如果this._loadComments(somedata);有兩個記錄,然後如果我按裏面的textarea alert('ta pressed');鍵被調用2次,如果它被稱爲10次數據。它不應該發生這樣的事情。它應該爲每個textarea只調用一次警報消息。

如何將事件附加到單個元素?我想在這裏我將活動附加到所有textarea,這就是爲什麼。

如果我添加內聯事件像onkeypress='_this._somefunction()'它說_this is undefined但它在那裏。

+0

嘗試http://jsfiddle.net/arunpjohny/y7PbH/1/ –

+0

我在這裏沒有看到任何變化。它只是你已經粘貼我的代碼 – manish

+0

不..我用'this.element.on('change'' –

回答

0

一種選擇是在添加它之前每次刪除事件處理程序。

function handleChange(){ 
    alert('ta pressed'); 
} 


_attachEvent:function() 
    { 
     ele.off('change','textarea',handleChange); 
     ele.on('change','textarea',handleChange); 
    } 
相關問題