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()函数来声明您自己的。