2011-08-05 68 views
0

我的插件需要一些時間來做一些事情。所以我想聽聽插件何時完成任務,從外面看,這樣我就可以展示一些東西。如何聆聽來自我的jquery插件之外的事件?

我想有這樣的事情 -

$('li').filterGroup ({ 

     onInit: function(){ 
      alert("plugin has started working"); 
     }, 

     onComplete: function(){ 

      alert("plugin has finished"); 
     } 
    }) 

我想我的插件代碼裏面寫這 -

(function($) { 
    // jQuery plugin definition 

    $.fn.filterGroup = function(config) 
    { 

     var settings = { 
        //some settings defined here 
         }; 




      var thisDropdown = this; //master copy 

     if(config) 
     { 
      $.extend(settings, config); 
     } 

      /*Tried following changes to make events work*/ 
      /*Tried following changes to make events work*/ 
      /*Tried following changes to make events work*/ 
      //I tried the following – assuming I will be able to listen to an onComplete event from outside 

     // reference the function from the options passed 
      var theFunc = config.onInit; 
      var anotherFunc = config.onComplete; 
      theFunc.call(); //does not work - gives error "theFunc is not a function" 

     this.each(function() 
     {  
        //here my plugin logic is done 
      anotherFunc.call(); //this is also not working - "anotherFunc is not a function" 
     }); 

     // allow jQuery chaining 
     return thisDropdown; 
    }; 

但是這不工作,我得到的錯誤 -

theFunc is not a function 

注 -我檢查了PLugins創作文檔特別是事件部分http://docs.jquery.com/Plugins/Authoring#Events,但看起來像是用於定義可以從外部調用的公共函數,所以不是我所期待的。原來的jQuery文檔在這裏呢?我想我只需要正確地遵循文檔。

還檢查了以下問題,但沒有得到 -
Bind Event to Custom Plugin Function in jQuery
Custom Event For Custom JQuery Plugin
Handle events in a jQuery plugin

更新

好,我知道我的錯誤,在我實際的代碼我有theFunc.call()anotherFunc.call()但在呼叫部分我只處理了onComplete。所以,我需要明確地寫出的OnInit()部分在我的插件調用 -

這部分 -

onInit: function(){ 
       alert("plugin has started working"); 
      } 

我的意思是,如果事件被內部插件定義,如果我不想處理什麼在外面的代碼?

+1

我的建議是在代碼中使用console.log來查看配置中的內容以及Func的實際值。使用Firebug或Chrome瀏覽器javascript控制檯查看正在記錄的內容。 – Joost

回答

1

奇怪。這個對我有用。 http://jsfiddle.net/LHzjG/

順便說一句,你也可以直接調用回調使用config.onComplete()並把參數,如果你喜歡。你可以使用jQuery.isFunction()預先檢查它是否是一個函數。

+0

謝謝,我的錯誤。請檢查我的更新 –

相關問題