我知道我可以使用$.fn.myFunction
构造函数创建自定义jQuery插件,并在JavaScript中调用自定义函数$('selector').myFunction()
。
但是,对于我目前正在处理的项目,我需要能够定义一个不需要选择器工作的函数。这实际上是一个MessageBox插件,它将以类似于C#的方式运行MessageBox
课程。因此,我最好将函数创建为MessageBox
,然后按如下方式调用它:
var myMessage = $.MessageBox();
然后依次myMessage.Show();
注意在函数调用开始时jQuery引用中缺少选择器托架。
我们将非常感激地收到有关最佳做法的任何建议。
答案 0 :(得分:14)
这应该有效:
jQuery.MessageBox = function() {
var show = function() {
// something...
}
var hide = function() {
// something...
}
return {
show: show,
hide: hide
}
}
答案 1 :(得分: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()
答案 2 :(得分:1)
(function ($) {
$.MessageBox = function () {
var show = function () {
// something...
}
var hide = function () {
// something...
}
return {
show: show,
hide: hide
}
}
})(Jquery);
我认为你最好使用Immediate调用函数来避免与命名空间冲突。