2010-03-09 113 views
0

我遇到了一個問題,我已經結束了兩個名爲相同的函數(jquery.fn.filter)。一個來自第三方插件,另一個來自我的插件之一。顯然,我可以在我的插件中重命名該函數,但如何編寫插件以避免發生這種情況的可能性最好?是否有可能引入某種類似java/.net的命名空間呢?如何避免jQuery插件之間的功能衝突

回答

0

我喜歡你對jQuery命名空間的看法。

http://docs.jquery.com/Using_jQuery_with_Other_Libraries)沒有幫助,如果你有同名的任何功能。

+0

我不知道怎麼這會有所幫助。我的問題是,兩個jQuery插件定義Query.fn中具有相同名稱的函數。 jQuery.fn.filterCharacters = function(options){...} – Jeremy 2010-03-09 15:54:56

2

這裏的問題不在於jQuery代碼是否可以使用名稱空間 - 您描述的衝突發生在jQuery插件的「導出」接口中,即用戶的函數名稱。這與傳統意義上的命名空間無關。

因爲它是jQuerys概念的一個重要組成部分,所以在集合上使用簡短易記的函數名稱,在沒有犧牲簡單性的情況下,沒有什麼可以做到的。

說了這麼多,可能的,但醜陋的解決方案會是什麼樣子:

$("#selector").fns("my.name.space.company")("myargument"); 

此代碼將調用虛函數fns解析給定的字符串,以一個真正的功能,並返回該功能。然而,實現這一功能作爲一個插件施加同樣的問題...

結論:沒有出路;-)

+0

作爲最後一個注意事項:使用上述使用類似 , $(「#selector」)的相同長度的函數名稱的輪詢函數沒有任何優勢。 my_name_space_company( 「myargument」); – 2010-03-09 15:48:02