javascript - 将附加参数传递给事件处理程序?

标签 javascript jquery jquery-events

我在这样的对象中定义了函数:

_clickHandler: function(event){
  event.preventDefault();

},

attachClickEv: function(element){
  ......
  element.on('click', this._clickHandler);
},

问题是我似乎无法将“this”传递给 clickHandler功能

我知道我可以将其包装在另一个函数中,例如:

var tthis = this;
element.on('click', function(event){
  tthis._clickHandler(event, tthis);
});

但是我以后无法使用以下方法取消该函数:

element.off('click', this._clickHandler);

还有其他办法吗?

最佳答案

您可以使用绑定(bind)来实现这一点。这是一个例子:

element.on('click', this._clickHandler.bind(this));

//later in the code...

_clickHandler: function(event) {

}

由于您使用的是 jQuery,因此您也可以使用 jQuery.proxy()。更多信息请参见:http://api.jquery.com/jQuery.proxy

更新:

要访问回调中的元素,您必须使用 event.targetevent.currentTarget 或执行以下操作(取决于您的操作正在做):

element.on('click', this._clickHandler.bind(this, element));

//later in the code...

_clickHandler: function(element, event) {

}

另一种方法是将元素设置为对象的属性,例如:this.element = $('#el'),然后在回调中使用它。

实例:http://jsbin.com/mezuberucu/1/edit?html,js,output

关于javascript - 将附加参数传递给事件处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28331102/

相关文章:

javascript - 是什么导致控制台错误 "Cannot read property ' setAttribute' of undefined at HTMLTableRowElement”

javascript - 使用 XPath 选择包含特定文本的 LI 时遇到问题

javascript - VueJS 语法 : Saving a value in a Promise

javascript - 使用具有多个类的 jquery 选择元素

jquery - 尝试选择最接近按钮的图像,但 Jquery 返回未定义

javascript - 停止触发 ajax 请求

javascript - Firefox Web 扩展后台页面中的 Websocket

javascript - 如何使用 jQuery 在事件处理程序上获取文档,除了文档中的一个类?

javascript - 当用户允许或拒绝访问 "Physical Location"时如何调用函数?

jQuery 线索提示 : show/hide on mouseover and sticky on click