2010-12-27 2 views
1

Я написал jQuery-плагин, который я хочу использовать в качестве объекта. Поэтому я объявил некоторые функции внутри плагина, который я хочу вызвать из любого другого места, точно так же, как объект с методами. Возможно ли это?Вызов внутренней функции функции jQuery-Plugin?

Для простоты:

(function($){ 
    $.fn.myPlugin = function(){ 
     // Here I want methods... 
     function foo() 
     { 
      // do something... 
     } 
    } 
})(jQuery); 

Тогда я хочу, чтобы вызвать внутреннюю функцию снаружи плагин как:

$.myPlugin.foo(); 

Но это не похоже на работу. Так что это даже возможно? Или есть другие решения? Для этой цели я не хочу использовать обычный несвязанный jQuery-класс. Потому что этот плагин должен работать вместе с некоторыми другими jQuery-плагинами.

Спасибо

ответ

1

Таким образом:

(function($){ 
    $.fn.myPlugin = (function(){ 
     // Here I want methods... 
     this.foo = function() 
     { 
      // do something... 
     } 
    })(); 
})(jQuery); 
+0

Спасибо. Это решение, похоже, соответствует моим требованиям. К сожалению, у вас есть ошибка в вашем коде. Вам придется оставить символ '();' после описания метода, так как он не работает с ними :) –

+0

Я, вероятно, немного ржавый в javascript. Не стесняйтесь редактировать мой пост, если это необходимо. –

2

Вы можете использовать $.fn и переписать код так:

(function($){ 
    $.fn.myPlugin = function(){ 
     // Here I want methods... 
     $.fn.myPlugin.foo = function() 
     { 
      // do something... 
     } 
    } 
})(jQuery); 

А вы можете назвать это нравится:

myPlugin().foo; 
+0

Спасибо за ваш ответ. Прекрасно работает. Я предпочел бы решение Alexandre C. Это кажется более элегантным. –

+0

@faileN: Конечно, вы можете пойти с этим, но обратите внимание, что это по сути то же самое :) – Sarfraz

+0

Yupp Я знаю. Не сказал, что твой неправильный :) Я просто подумал, что решение Alexandre C. более изящное: P –

1

Сайт docs jQuery recommends a good way of doing it: make $.fn.myPlugin берет имя вашей функции в качестве своего первого параметра и передает все остальные аргументы в правильную функцию. Пример кода несколько длинный, поэтому перейдите на этот сайт, чтобы посмотреть на него.

+0

Это тоже довольно крутое решение. Но это много переполнения только для одного метода, который я хочу иметь в своем плагине :) Спасибо. Я буду помнить это о больших задачах :) –

Смежные вопросы