扩展了jQuery功能的变体细节

extending jQuery functionality specifics on variations

本文关键字:细节 功能 jQuery 扩展      更新时间:2023-09-26

我知道我可以用两种形式扩展jQuery:

1)

jQuery.fn.extend({
    variation1: function(){
        ...           
    }
});
I use this like $(selector).variation1();

2)

和自定义功能

jQuery.variation2 = {
    something: function(){
        var execute = function(){
            ...
        }
    }
}
I use this like $.variation2.something()  

我的问题是:

  1. 在第一种情况下,我无法在没有选择器的情况下调用函数;此代码导致错误$.variation1();这是正确的吗?意思是,有没有一种方法可以在没有元素选择器的情况下调用这些函数
  2. 在第二种情况下,如何使用选项初始化variation2?我之所以这么问,是因为在MooTools中,当创建一个类时,我们可以初始化该类,如下所示:

var jsClass=新类({实现:[Options],选项:{},初始化:函数(选项){this.setOptions(选项);}});

我们称之为,并使用自定义选项进行初始化

新jsClass({option1:this,option2:that})

因此,在MooTools示例中,类实例默认执行选项。回到问题上来,在jQuery中有类似的方法吗?

提前感谢

正如您所注意到的,这两种变体是不同的。jQuery.fn提供了一组应用于jQuery QuerySet对象的函数(应用jQuery选择器的结果)。jQuery.*可以简单地被认为是全局静态对象,包括(有时)任何有权访问jQuery对象的人都可以访问的函数。

为了初始化变体2,我会做一些类似的事情:

jQuery.variation2 = (function() {
    var a = ...;
    var b = ...; // other initialization
    return {
        something: function() {
            ...
        },  ...
    };
})();

您可以以类似的方式使用闭包来提供初始化的代码。