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) { 

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

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

(这是从定时器插件)

谢谢,理查德

jQuery.extend用于扩展任何具有附加function的对象,但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() 。 (不需要select器,例如$.ajax() 。)

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

用法: $('.selector').xyz() 。 (select器需要像$('#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原型对象。

这篇博文有很好的描述:

 $.fn.extend({ myMethod: function(){...} }); //jQuery("div").myMethod(); $.extend({ myMethod2: function(){...} }); //jQuery.myMethod2(); 

行情:

作为一般规则,您应该为函数扩展jQuery对象,为方法扩展jQuery.fn对象。 一个函数,而不是一个方法,不直接从DOM访问。

 $.fn.something= function{}; 

指向jQuery.prototype,并通过“this”访问dom元素。 现在你可以使用$(selector).something(); 所以这就像$(selector).css();这样的插件函数$(selector).css();

 $.something = function{}; 

添加一个属性或函数到jQuery对象本身,你不能使用“this”的dom访问现在你可以使用它作为$.something() ; 这可以像$.trim()一样用作实用函数

 $.fn.extend({function1(), function2()}) and $.extend({function1(), function2()}) 

允许同时添加多个函数。如果我们提供多个对象,它们也可以用来合并两个对象文字。