У меня небольшая проблема. Я установил некоторые настройки по умолчанию для jQuery:
defaults = {
insdElmnts: 'img',
cursorDistance : 10
};
function plugin (options) {
this.settings = $.extend({}, defaults, options);
}
и я пытаюсь использовать этот с помощью cursorDistance
следующим образом:
_mark.css({
left: 10 - this.settings.cursorDistance,
top: 10 - this.settings.cursorDistance
});
но у меня есть некоторая ошибка: невозможно прочитать свойство "cursorDistance" неопределенного. Что не так? Нужно ли добавлять некоторые единицы? спасибо за помощью.
1) Если вы разрабатываете плагин jquery - "это" внутри него означает "сбор jquery". Когда вы вызываете $ (". Element_class"). Plugin(); - внутри функции плагина это будет равно $ (". element_class"). Чтобы получить доступ к каждому элементу коллекции, вы должны использовать.each().
2) Используйте метод.data() для связывания некоторых данных с элементом html. Пример плагина:
(function($){
var defaults = {
insdElmnts: 'img',
cursorDistance : 10
};
$.fn.pluginName= function(options) {
//here "this" means "jquery collection"
return this.each(function () {
//here "this" means "html element"
var el = $(this);
el.data("settings", $.extend({}, defaults, options));
/** do here something that you need **/
});
};
})(jQuery);
3) Используйте метод.data для извлечения данных вне плагина:
_mark.css({
left: 10 - _mark.data("settings").cursorDistance,
top: 10 - _mark.data("settings").cursorDistance
});
Но лучше постарайтесь написать хороший плагин, который сделает всю необходимую работу.
settings
не определен наthis
, прочитать сообщение об ошибке , очень внимательно. Он ищет свойство с именем 'cursorDistance' дляundefined
, и неопределенное, очевидно, не имеет свойств. это означает, чтоthis.settings
не определено.this
, вероятно , не то , что вы думаете.