При определении плагина jQuery нужно ссылаться на `this [0]` вместо `this` - PullRequest
0 голосов
/ 23 февраля 2019

Я пытаюсь преобразовать написанный мною код в аккуратный плагин jQuery, чтобы его можно было использовать повторно.Я очень новичок в написании собственного плагина jQuery, поэтому сейчас я просто чувствую, как это делается.

Эта конкретная функция предназначена для использования совместно с Leaflet, библиотекой веб-картографирования, напоминающей Google Maps.,Первым делом я подключил mousemove прослушиватель событий.В Leaflet это делается следующим образом:

// Initialize map
map = L.map('map');

map.addEventListener('mousemove', function(ev) {
    console.log(ev);
    // Do some event handling here
});

Естественно, первое, что я хочу, чтобы мой плагин, это прикрепил точно такой же прослушиватель событий к карте.Итак, я начал со следующего кода, основанного на этом руководстве :

(function ( $ ) {
    $.fn.spotlight = function() {
        console.log(this);
        this.addEventListener('mousemove', function(ev) {});
    };
}( jQuery ));

И затем я вызываю его в основном скрипте так:

map = L.map('map');
$(map).spotlight();

Однако при этом выдается ошибка, указывающая, что this.addEventlListener is not a function, а предыдущий оператор console.log показывает, что фактически передано одноэлементный длинный список объектов, содержащих объект карты.Итак, этот код работает:

(function ( $ ) {
    $.fn.spotlight = function() {
        console.log(this[0]);
        this[0].addEventListener('mousemove', function(ev) {});
    };
}( jQuery ));

Я вижу, что в руководстве есть что-то, что можно сделать с помощью функции each(), но я не могу найти способ вызвать addEventListener() Функция для каждого элемента в этом списке, и даже если это даже то, что я должен делать.

Я делаю ошибку в том, как должна работать функция jquery?Технически это работает, но я хочу знать правильный путь.

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