在变体上扩展jQuery功能细节

时间:2014-04-26 03:56:40

标签: javascript jquery

我知道我可以用两种形式扩展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中,在创建类时,我们可以初始化类,如:
  3. var jsClass = new Class({     实施:[选项],         选项:{         },         initialize:function(options){             this.setOptions(选项);         }     });

    我们称之为,并使用自定义选项(如

    )进行初始化

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

    因此,在MooTools示例中,类实例默认执行选项。回到这个问题,有没有办法在jQuery中做类似的事情?

    提前致谢

1 个答案:

答案 0 :(得分:0)

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

要初始化变体2,我会做类似的事情:

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

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