2014-07-10 100 views
1

反正有一個jQuery函數的範圍限制到比使用主要功能以外的對象:有沒有辦法將jquery函數包裝到對象中?

(function($) { 

    $.fn.myLib = function(funcName) { 

     if (action === "func1") { 
      // Open popup code. 
     } 

     if (action === "func2") { 
      // Close popup code. 
     } 

    }; 

}(jQuery)); 

我想做到這一點,這樣我可以這樣調用函數:

$(el).myLib.func1(); 
$(el).myLib.func2(); 

回答

1

有真的不是很多很好的理由,試圖做到這一點:

$(el).myLib.func1(); 

因爲this指針時func1()執行將是myLib,您將無法訪問$(el)。所以,除非你想要的只是靜態方法,否則它並不會帶來很多好處。如果這是你真正想要的,那麼你可以這樣做:

$.fn.myLib = {}; 
$.fn.myLib.func1 = function(...) {...}; 
$.fn.myLib.func2 = function(...) {...}; 

如果你真的希望能夠有存取要求的jQuery對象(我相信),然後堅持一個級別,並使用一個名稱前綴這給你提供了與名稱衝突防護相同的級別。

$.fn.myLibFunc1 = function(...) {...}; 
$.fn.myLibFunc2 = function(...) {...}; 

然後,你可以這樣做:

$(el).myLibFunc1(); 

而且,this指針myLibFunc1將是jQuery對象調用它。

+0

Yuup這就是我的目標(仍然能夠訪問'這')。我會堅持選擇(mylibFunc1();) – user3718546

0
(function($) { 
$.fn.myLib = function(funcName) { 
    var obj=new Object 
    obj.func1=function() {alert('first')} 
    obj.func2=function() {alert('second')} 
    return obj 

}; 
}(jQuery)); 
相關問題