创建没有选择器先决条件的自定义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调用函数来避免与命名空间冲突。