Javascript 创建自定义jQuery函数而不使用选择器先决条件

Javascript 创建自定义jQuery函数而不使用选择器先决条件,javascript,jquery,Javascript,Jquery,我知道我可以通过使用$.fn.myFunction构造函数创建自定义jQuery插件,并在JavaScript中将自定义函数调用为$('selector').myFunction() 然而,对于我目前正在进行的一个项目,我需要能够定义一个不需要选择器就能工作的函数。这实际上是针对MessageBox插件的,它的工作方式与C35;的MessageBox类类似。因此,我理想地将函数创建为MessageBox,然后按如下方式调用它: var myMessage=$.MessageBox()

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

然而,对于我目前正在进行的一个项目,我需要能够定义一个不需要选择器就能工作的函数。这实际上是针对MessageBox插件的,它的工作方式与C35;的
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
  }
}
有一个很好的观点——因为您正在使主名称空间变得混乱。如果您有比MessageBox更多的对象,一个解决方案是创建自己的名称空间,如下所示:

jQuery.myLib = {
  MessageBox: function() {
    var show = function() {
      // something...
    }
    var hide = function() {
      // something...
    }
    return {
      show: show,
      hide: hide
    }
  }
}
jQuery.myLib.MessageBox.show()
这意味着您在主名称空间中只占据一个位置(在本例中是库的名称
myLib
)。你可以这样称呼它:

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

我认为您最好考虑立即调用函数,以避免与名称空间发生冲突。

@relipse:您能澄清为什么您有疑问吗?因为我想知道这样弄乱jquery的名称空间是一种好的做法,还是有其他方法。同时,我实现了我自己的对话框,它不使用与上面代码类似的选择器。我知道雅虎!库有一个特殊的YAHOO.namespace()函数来声明您自己的。