jQuery.extend和jQuery.fn.extend的区别?

我想了解jquery插件语法,因为我想将两个插件合并为一个。 闪烁器也需要能够停止间隔或运行多次。

无论如何,这个语法和

jQuery.fn.extend({
    everyTime: function(interval, label, fn, times) {
        return this.each(function() {
            jQuery.timer.add(this, interval, label, fn, times);
        });
    },
    oneTime: function(interval, label, fn) {
        return this.each(function() {
            jQuery.timer.add(this, interval, label, fn, 1);
        });
    },

这个

$.fn.blink = function(options)
    {

因为它看起来像第一个(without =)是一次设置多个方法的一种方法。 这是正确的吗? 同时我在这里什么是将元素和一些逻辑添加到jquery对象的原因是什么?

jQuery.extend({
    timer: {
        global: [],
        guid: 1,
        dataKey: "jQuery.timer",

(这是来自定时器插件)

谢谢,理查德


jQuery.extend用于扩展具有附加功能的任何对象,但jQuery.fn.extend用于扩展jQuery.fn对象,实际上它一次添加了几个插件函数(而不是分别分配每个函数)。

jQuery.extend

var obj = { x: function() {} }

jQuery.extend(obj, { y: function() {} });

// now obj is an object with functions x and y

jQuery.fn.extend

jQuery.fn.extend( {
        x: function() {},
        y: function() {}
});

// creates 2 plugin functions (x and y)

jQuery.extend({
    abc: function(){
        alert('abc');
    }
});

用法: $.abc() 。 (不需要选择器,例如$.ajax() 。)

jQuery.fn.extend({
    xyz: function(){
        alert('xyz');
    }
});

用法: $('.selector').xyz() 。 (需要选择符$('#button').click() 。)

主要用于实现$.fn.each()

我希望它有帮助。


jQuery.extend和jQuery.fn.extend的区别?

实际上,除了基准参考之外,没有其他的。 在jQuery源代码中,您可以阅读:

jQuery.extend = jQuery.fn.extend = function() { … };

那么它是怎样工作的? 该文件显示:

将两个或更多对象的内容合并到第一个对象中。

这只是一个for-in-loop,用于复制属性,用一个标志来包装嵌套对象。 另一个特点是:

如果只有一个参数提供给$.extend() ,这意味着目标参数被省略

 // then the following will happen:
 target = this;

因此,如果函数在jQuery本身上调用(没有明确的目标),它将扩展jQuery名称空间。 如果函数在jQuery.fn上调用(没有明确的目标),它将扩展所有(插件)方法所在的jQuery原型对象。

链接地址: http://www.djcxy.com/p/14205.html

上一篇: Difference between jQuery.extend and jQuery.fn.extend?

下一篇: `Let` inference in Hindley