【发布时间】:2013-11-24 11:26:28
【问题描述】:
以下是小部件的 sn-p:
(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,但它就在那里。
【问题讨论】:
-
我在这里没有看到任何变化。只是你粘贴了我的代码吗
-
没有。我用
this.element.on('change' -
这里
ele是一样的
标签: jquery jquery-widgets jquery-ui-widget-factory