2012-12-02 4 views
1
(function($) { 
    $.fn.extend({ 
    clock: function(options) { 
    var options = $.extend(defaults, options); 
     ....... 
     ....... 
     return this.each(function() { 
     var prev = function() { 
       console.log("hello world!"); 
      alert('getweather'); 
      }; 
      $('#left').click(function() {alert(342);}); 

     }); 
})(jQuery); 

как вызвать плагин функции ПРЕД и $ («# левый») снизу кодРасширенный Javascript вызова функции плагина в функции

$.fn.clock().prev(); //doesn't work 

$.fn.clock('#left'); //doesn't work 

заранее спасибо

+4

У вас нет доступа к функциям внутри другой функции сферы за пределами этой функции. – adeneo

+0

Кроме того, вы не закрываете эту функцию самоисполнения правильно и не передаете ей jQuery, поскольку это, вероятно, было предназначено -> '(function ($) {...}) (jQuery);', тогда опять же, похоже, что вы просто не включили весь плагин? – adeneo

ответ

0

Вы не можете, основываясь на код предоставлен. Это невозможно. Функция назначается локальной переменной prev, которая никак не отображается вне локальной области.

Если вы хотите сделать его доступным, вам нужно сохранить функцию где-нибудь так, чтобы она не выходила из области видимости, а затем предоставляла некоторый интерфейс, как правило, с помощью чего-то вроде $('my-element').clock('prev'). jQuery Plugin Authoring объясняет лучшие практики именно этого, особенно под Plugin Methods.

0

Это anonymous функции. Даже если бы они были в пределах вашей компетенции, вы бы не смогли их назвать.

Обходной бы, чтобы вызвать click событие на #left:

$('#left').trigger('click'); 
Смежные вопросы