Как вызвать функцию плагина jQuery (создание нового плагина)? - PullRequest
1 голос
/ 29 октября 2009

Я создаю плагин jQuery для одного из моих проектов, и мне было интересно, как лучше всего это сделать. Мне нужно иметь возможность вызывать функцию в плагине извне плагина в любое время. Например, происходит событие вне плагина, и я хочу сказать «плагин, сделай это». Я немного поиграл, и это работает, но я не чувствую себя хорошо.

В моем плагине:

$.fn.myPlugin.update = function(element) {
    updateTable(element);   // this is a function within the plugin 
};

Чтобы вызвать эту функцию, я делаю это:

$('#someID').myPlugin.update();

Это работает, но элемент param равен нулю, и у меня есть только один элемент для этого плагина. Я думаю, что это не удастся с несколькими элементами, так как функция ищет этот элемент для конкретных дочерних элементов. Как правильно вызывать функцию в плагине извне и воздействовать на элемент, к которому она прикреплена? Я следую этому уроку: http://www.learningjquery.com/2007/10/a-plugin-development-pattern

Спасибо!

Ответы [ 2 ]

2 голосов
/ 29 октября 2009

Прежде всего, выбранные элементы находятся в переменной this. Элементы не передаются в функцию через параметр вашего элемента. Так, например:

$.fn.myPlugin.update = function(){
    updateTable(this);
}

должно работать отлично. Если вы хотите получить объект jQuery, связанный с селектором, просто выполните

selector = $(this);

selector - это объект jQuery, который является селектором.

1 голос
/ 29 октября 2009

Аргумент элемента должен быть неопределенным, потому что вы ничего не передаете в функцию update (). Если вы хотите сослаться на содержимое объекта jQuery, попробуйте:

jQuery.fn.myPlugin.update = function() {
  this.each(function() {
    updateTable(this);
  }
};

Кроме того, вы должны применять свой плагин к объекту jQuery, а не к $. Эта статья дает вам плохой совет на этот счет. Взгляните на jQuery Plugins / Authoring .

...