Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在eventhandler中获取原型_Javascript_Oop_Dom Events - Fatal编程技术网

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实例。