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

Ben*_*enM 13 javascript jquery

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

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

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

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

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

Ama*_*dan 14

这应该工作:

jQuery.MessageBox = function() {
  var show = function() {
    // something...
  }
  var hide = function() {
    // something...
  }
  return {
    show: show,
    hide: hide
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 因为我想知道如果弄乱jquery的命名空间是好的做法,还是有另一种方法.与此同时,我实现了自己的dialogBox,它不使用类似于上面代码的选择器.https://github.com/relipse/jquery-dialogPrompt我知道YAHOO!库有一个特殊的YAHOO.namespace()函数来声明你自己的. (3认同)

The*_*der 5

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

jQuery.myLib = {
  MessageBox: function() {
    var show = function() {
      // something...
    }
    var hide = function() {
      // something...
    }
    return {
      show: show,
      hide: hide
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这意味着您只在主命名空间中占一个位置(在这种情况下,您的库的名称myLib).你这样称呼它:

jQuery.myLib.MessageBox.show()
Run Code Online (Sandbox Code Playgroud)