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()})
允许同时添加多个函数。如果我们提供多个对象,它们也可以用来合并两个对象文字。