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

时间:2011-04-23 12:45:31

标签: javascript jquery

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

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

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

注意在函数调用开始时jQuery引用中缺少选择器托架。

我们将非常感激地收到有关最佳做法的任何建议。

3 个答案:

答案 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调用函数来避免与命名空间冲突。