2012-04-23 74 views
3

我正在創作一個jQuery插件,其中我想寫的其中一個方法不會接受選擇器參數,也不需要傳遞元素。我希望它可以通過像$.myMethod()這樣的電話,如$.ajax()方法中的內置電話那樣。到現在爲止我已經試過類似不採取元素的jQuery插件方法

$.fn.myMethod(options) { 
    console.log("I've been called"); 
} 

當我嘗試$('.a_selector').myMethod()但不是當我嘗試$.myMethod()這個工程。

這是可以使用jQuery插件還是僅適用於interal函數。

此方法的目的是對存儲在jQuery.data中的一些數據執行操作。我認識到他們jQuery.data與一個元素相關聯,但在這種情況下,我已經硬編碼到body元素,使最終用戶更容易。

回答

2

作爲$.fn成員的函數適用於jQuery對象,而不適用於$對象本身。如果你想創建這樣的方法,你只需要編寫:

$.yourMethod = function() { 
    // Do something. 
}; 

現在,你可以把它叫做沒有一個jQuery對象:

$.yourMethod(); 
+0

這種公然顯而易見的現象讓我sma目結舌......謝謝! – wmarbut 2012-04-23 15:08:03

0

宣佈這樣的功能的一個精心策劃的方式,可以

$.extend({myMethodA:function(){ 
          //Do something 
          }, 
      myMethodB:function(){ 
         //Do something else 
           }  
       });