以下是小部件的片段:
(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 个数据,则被调用 10 次。它不应该这样发生。它应该只为单个文本区域调用一次警报消息。
如何将事件附加到单个元素?我想在这里我将事件附加到所有文本区域,这就是原因。
如果我像onkeypress='_this._somefunction()'
它说的那样添加内联事件,_this is undefined
但它就在那里。