我正在尝试创建一个取消绑定然后绑定事件的自定义函数。它看起来像这样:
App.bindEvent = function(selector, eventType, eventHandler) {
$(selector).unbind(eventType);
$(selector).bind(eventType, function(event) {
eventHandler(event);
});
};
但是,我遇到的问题是我不能使用this关键字来引用被单击的DOM元素。例如,我不能这样做:
App.bindEvent("#my-element", "click", function() {
var myId = $(this).attr("data-my-id");
});
我如何将this关键字指向点击的DOM元素,就像在jQuery.bind()中一样?
感谢您的帮助。
答案 0 :(得分:3)
变化:
eventHandler(event);
要:
eventHandler.call(this, event);
这会将您的函数的“范围”更改为与原始“绑定”调用的范围相同。
答案 1 :(得分:2)
相反如何:
App.bindEvent = function(selector, eventType, eventHandler) {
var element = this;
$(selector).unbind(eventType);
$(selector).bind(eventType, function(event) {
eventHandler.call(element, event);
});
};
答案 2 :(得分:1)
您需要在对象的上下文中call
处理程序:
eventHandler.call(this, event);
答案 3 :(得分:0)
我认为您正在尝试参考
event.target
例如:
App.bindEvent("#my-element", "click", function(event) {
var myId = $(event.target).attr("data-my-id");
});