Я пытаюсь преобразовать написанный мною код в аккуратный плагин 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?Технически это работает, но я хочу знать правильный путь.