创建没有选择器先决条件的自定义jQuery函数

我知道我可以使用$.fn.myFunction构造函数创建自定义jQuery插件,并在JavaScript中调用自定义函数作为$('selector').myFunction()

但是,对于我目前正在进行的项目,我需要能够定义一个不需要选择器工作的函数。这实际上是一个MessageBox插件,它将以类似于C#的MessageBox类的方式运行。 因此,我希望将函数创建为MessageBox ,然后按如下方式调用它:

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

注意在函数调用开始时jQuery引用中缺少选择器brakets。

我们将非常感激地就此的最佳做法提出任何建议。

这应该工作:

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

relipse有一个好点 – 因为你混淆了主命名空间。 如果你有更多的对象而不仅仅是一个解决方案。 MessageBox是这样创建自己的命名空间:

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

这意味着您只在主命名空间中占一个位置(库的名称,在本例中为myLib )。 你这样称呼它:

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

我认为你最好使用Immediate调用函数来避免与命名空间冲突。