Номер как опция плагина jquery по умолчанию

0

У меня небольшая проблема. Я установил некоторые настройки по умолчанию для 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" неопределенного. Что не так? Нужно ли добавлять некоторые единицы? спасибо за помощью.

  • 0
    settings не определен на this , прочитать сообщение об ошибке , очень внимательно. Он ищет свойство с именем 'cursorDistance' для undefined , и неопределенное, очевидно, не имеет свойств. это означает, что this.settings не определено.
  • 0
    this , вероятно , не то , что вы думаете.
Показать ещё 1 комментарий
Теги:
jquery-plugins
settings

1 ответ

2
Лучший ответ

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
});

Но лучше постарайтесь написать хороший плагин, который сделает всю необходимую работу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню