Javascript 在eventhandler中获取原型
我试图将原型放入事件处理程序中Javascript 在eventhandler中获取原型,javascript,oop,dom-events,Javascript,Oop,Dom Events,我试图将原型放入事件处理程序中 function Post(){ this.post; this.deleteButton; } Post.prototype.delete = function(){ var OBJ = this;//this is not the prototype, instead it is the HTML element (deleteButton) $(OBJ.container).remove(); } Post.prototyp
function Post(){
this.post;
this.deleteButton;
}
Post.prototype.delete = function(){
var OBJ = this;//this is not the prototype, instead it is the HTML element (deleteButton)
$(OBJ.container).remove();
}
Post.prototype.createPost = function(){
var OBJ = this;
OBJ.post = document.createElement('div');
OBJ.post.className = 'post'
OBJ.deleteButton = document.createElement('div');
OBJ.deleteButton.addEventListener('click', OBJ.delete, false);
}
请看上面的评论部分。删除处理程序被声明为Post
的原型方法。我将delete处理程序分配给delete按钮。问题是,这个
变成了HTML元素,而不是对象原型
编辑:
我还希望有机会删除删除处理程序,如下所示:
OBJ.deleteButton.addEventListener('click', function() {
OBJ.delete();
}, false);
但是,OBJ
不是原型,它指的是实例
更新:如果您也想删除它,请存储对它的引用:
this.deleteHandler_ = function() {
OBJ.delete();
};
OBJ.deleteButton.addEventListener('click', this.deleteHandler_, false);
其他地方:
this.deleteButton.removeEventListener('click', this.deleteHandler_);
像这样:
OBJ.deleteButton.addEventListener('click', function() {
OBJ.delete();
}, false);
但是,OBJ
不是原型,它指的是实例
更新:如果您也想删除它,请存储对它的引用:
this.deleteHandler_ = function() {
OBJ.delete();
};
OBJ.deleteButton.addEventListener('click', this.deleteHandler_, false);
其他地方:
this.deleteButton.removeEventListener('click', this.deleteHandler_);
如果使用jquery,则可以使用代理方法:
OBJ.deleteButton.addEventListener('click',$.proxy(OBJ.delete,OBJ), false);
如果使用jquery,则可以使用代理方法:
OBJ.deleteButton.addEventListener('click',$.proxy(OBJ.delete,OBJ), false);
在jQuery中,您可以使用:
还有ECMAScript 5方法:
要删除侦听器,请执行以下操作:
OBJ.deleteButton.removeEventListener('click', onDelete, false);
在jQuery中,您可以使用:
还有ECMAScript 5方法:
要删除侦听器,请执行以下操作:
OBJ.deleteButton.removeEventListener('click', onDelete, false);
Kling忘了提到我也想删除该事件handler@Woho87:然后存储对它的引用。小的附加详细信息:MSIE模型需要使用oElt.attachEvent而不是oElt.addEventListenerKling忘记提到我也想删除事件handler@Woho87:然后存储对它的引用。其他小细节:MSIE模型需要使用oElt.attachEvent而不是oElt.AddEventListener我将很难用此解决方案删除事件处理程序,不是吗?我将很难用此解决方案删除事件处理程序,不是吗?@Felix Kling,这会使答案完全贬值。没有removeEventListener示例?@Felix Kling,它完全取消了答案。没有RevEvestListListIn例子。考虑将CREATEPOST函数体放在构造函数内,这样就不需要2个调用来创建一个POST实例。考虑将CREATEPOST函数体放在构造函数内,这样就不需要2个调用来创建一个POST实例。