Javascript jQuery-在自定义函数中使用$(this)

Javascript jQuery-在自定义函数中使用$(this),javascript,jquery,dom,Javascript,Jquery,Dom,我正在尝试创建一个自定义函数,该函数先解除绑定,然后绑定一个事件。看起来是这样的: App.bindEvent = function(selector, eventType, eventHandler) { $(selector).unbind(eventType); $(selector).bind(eventType, function(event) { eventHandler(event); }); }; 然而,我面临的问题是,我不能使用this

我正在尝试创建一个自定义函数,该函数先解除绑定,然后绑定一个事件。看起来是这样的:

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关键字像jQuery.bind中那样指向单击的DOM元素

感谢您的帮助。

您需要在对象的上下文中调用处理程序:

eventHandler.call(this, event);
您需要在对象的上下文中创建处理程序:

eventHandler.call(this, event);
更改:

eventHandler(event);
致:

这会将函数的作用域更改为与原始绑定调用的作用域相同。

更改:

eventHandler(event);
致:


这会将函数的作用域更改为与原始绑定调用的作用域相同。

改为:

App.bindEvent = function(selector, eventType, eventHandler) {
    var element = this;

    $(selector).unbind(eventType);
    $(selector).bind(eventType, function(event) {
        eventHandler.call(element, event);
    });
};

这个怎么样

App.bindEvent = function(selector, eventType, eventHandler) {
    var element = this;

    $(selector).unbind(eventType);
    $(selector).bind(eventType, function(event) {
        eventHandler.call(element, event);
    });
};

我想你是指

event.target
例如:

App.bindEvent("#my-element", "click", function(event) {
    var myId = $(event.target).attr("data-my-id");
});

看看吧

我想你是在指

event.target
例如:

App.bindEvent("#my-element", "click", function(event) {
    var myId = $(event.target).attr("data-my-id");
});
退房