jQuery - использование $ (this) в пользовательской функции - PullRequest
1 голос
/ 24 мая 2011

Я пытаюсь создать пользовательскую функцию, которая связывает, а затем связывает событие.Это выглядит следующим образом:

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 ()?за любую помощь.

Ответы [ 4 ]

3 голосов
/ 24 мая 2011

Изменение:

eventHandler(event);

На:

eventHandler.call(this, event);

Это изменит "область" вашей функции на ту же, что и область исходного вызова "bind".

2 голосов
/ 24 мая 2011

Как насчет этого:

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

    $(selector).unbind(eventType);
    $(selector).bind(eventType, function(event) {
        eventHandler.call(element, event);
    });
};
1 голос
/ 24 мая 2011

Вам необходимо call обработчик в контексте объекта:

eventHandler.call(this, event);
0 голосов
/ 24 мая 2011

Я думаю, что вы пытаетесь сослаться на

event.target

Например:

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

проверить документацию по jquery

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...