2011-04-23 103 views
13

創建自定義的jQuery功能我知道,我可以用$.fn.myFunction構造函數,調用JavaScript中的自定義函數$('selector').myFunction()創建自定義的jQuery插件。沒有選擇的先決條件

但是,對於我目前正在處理的項目,我需要能夠定義一個不需要選擇器工作的函數。這實際上是一個MessageBox插件,它將以類似的方式C#的MessageBox類。因此,我非常喜歡來創建功能MessageBox,然後調用它,如下所示:

var myMessage = $.MessageBox();,然後依次myMessage.Show();

通知在的開始缺乏jQuery的參考選擇brakets的函數調用。

在這個最好的做法任何建議,將受到歡迎。

回答

14

這應該工作:

jQuery.MessageBox = function() { 
    var show = function() { 
    // something... 
    } 
    var hide = function() { 
    // something... 
    } 
    return { 
    show: show, 
    hide: hide 
    } 
} 
+1

這是一個很好的做法嗎? – relipse 2013-05-17 03:13:01

+0

@relipse:你能澄清你爲什麼有疑慮嗎? – Amadan 2013-05-17 07:29:09

+3

因爲我想知道是否像這樣搞亂了jquery的命名空間是很好的做法,或者有另一種方法。與此同時,我實現了我自己的dialogBox,它不使用類似於上面代碼的選擇器。 https://github.com/relipse/jquery-dialogPrompt我知道YAHOO!庫有一個特殊的YAHOO.namespace()函數來聲明你自己的。 – relipse 2013-05-23 00:01:20

5

relipse好點 - 因爲你是混亂的主命名空間。一個解決方案,如果你有更多的對象不只是例如。 MessageBox的是創建自己的命名空間是這樣的:

jQuery.myLib = { 
    MessageBox: function() { 
    var show = function() { 
     // something... 
    } 
    var hide = function() { 
     // something... 
    } 
    return { 
     show: show, 
     hide: hide 
    } 
    } 
} 

這意味着你只能採取在主命名空間中一處(庫的名稱,在這種情況下myLib)。你會這樣稱呼它:

jQuery.myLib.MessageBox.show() 
1
(function ($) { 
    $.MessageBox = function() { 
     var show = function() { 
      // something... 
     } 
     var hide = function() { 
      // something... 
     } 
     return { 
      show: show, 
      hide: hide 
     } 
    } 
})(Jquery); 

我想你最好範圍,立即調用功能,以避免與命名空間衝突。