首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >jQuery.extend和jQuery.fn.extend的区别是什么?

jQuery.extend和jQuery.fn.extend的区别是什么?
EN

Stack Overflow用户
提问于 2010-01-02 17:48:15
回答 5查看 63.2K关注 0票数 84

我正在尝试理解jquery插件的语法,因为我想将两个插件合并为一个。闪光灯还需要能够停止de interval或多次运行。

无论如何,这个语法是否与

代码语言:javascript
复制
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);
        });
    },

代码语言:javascript
复制
$.fn.blink = function(options)
    {

因为看起来第一个(没有=)是一种同时设置多个方法的方法。是这样的吗?另外,既然我在这里,那么向jquery对象添加元素和一些逻辑的原因是什么呢?

代码语言:javascript
复制
jQuery.extend({
    timer: {
        global: [],
        guid: 1,
        dataKey: "jQuery.timer",

(来自计时器插件)

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-01-02 17:53:16

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

jQuery.extend

代码语言:javascript
复制
var obj = { x: function() {} }

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

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

jQuery.fn.extend

代码语言:javascript
复制
jQuery.fn.extend( {
        x: function() {},
        y: function() {}
});

// creates 2 plugin functions (x and y)
票数 92
EN

Stack Overflow用户

发布于 2012-12-21 22:54:23

代码语言:javascript
复制
jQuery.extend({
    abc: function(){
        alert('abc');
    }
});

用法:$.abc().(不需要像$.ajax()那样的选择器。)

代码语言:javascript
复制
jQuery.fn.extend({
    xyz: function(){
        alert('xyz');
    }
});

用法:$('.selector').xyz().(选择器是必需的,如$('#button').click()。)

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

我希望它能帮上忙。

票数 77
EN

Stack Overflow用户

发布于 2013-02-12 04:04:06

jQuery.extend和jQuery.fn.extend之间的

区别?

实际上,除了它们的基本引用之外,没有其他的引用。在jQuery source中,您可以阅读:

代码语言:javascript
复制
jQuery.extend = jQuery.fn.extend = function() { … };

那么它是如何工作的呢?documentation为:

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

它只是一个for-in-loop,用于复制属性,并使用一个标记来递归嵌套对象。还有另一个特性:

如果只向$.extend()提供了一个参数,则为

,这意味着省略了目标参数

代码语言:javascript
复制
 // then the following will happen:
 target = this;

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

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1991126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档