我试图理解jquery插件语法,因为我想合并两个插件 一。闪光灯也需要能够停止de间隔或运行多次。
反正 这个语法与
相同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",
(这是来自计时器插件)
答案 0 :(得分:87)
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
<强> 1.3中强>:
jQuery.fn.extend( {
x: function() {},
y: function() {}
});
// creates 2 plugin functions (x and y)
答案 1 :(得分:68)
jQuery.extend({
abc: function(){
alert('abc');
}
});
用法: $.abc()
。 (不需要选择器,如$.ajax()
。)
jQuery.fn.extend({
xyz: function(){
alert('xyz');
}
});
用法: $('.selector').xyz()
。 (选择器需要$('#button').click()
。)
主要用于实现$.fn.each()
。
我希望它有所帮助。
答案 2 :(得分:19)
jQuery.extend和jQuery.fn.extend之间的区别?
实际上,除了他们的基准参考之外没有其他任何东西。在jQuery source中,您可以阅读:
jQuery.extend = jQuery.fn.extend = function() { … };
那它是如何运作的? documentation读取:
将两个或多个对象的内容合并到第一个对象中。
它只是一个for-in-loop,它复制属性,用一个标记来追加嵌套对象。另一个特点是:
如果只向
$.extend()
提供了一个参数,则表示省略了目标参数
// then the following will happen:
target = this;
因此,如果函数在jQuery
本身上调用(没有显式目标),它将扩展jQuery名称空间。如果函数在jQuery.fn
上调用(没有显式目标),它将扩展所有(插件)方法所在的jQuery原型对象。
答案 3 :(得分:16)
This blog post有很好的描述:
$.fn.extend({
myMethod: function(){...}
});
//jQuery("div").myMethod();
$.extend({
myMethod2: function(){...}
});
//jQuery.myMethod2();
行情:
作为一般规则,您应该扩展函数的jQuery对象和方法的jQuery.fn对象。与方法相反,函数不能直接从DOM访问。
答案 4 :(得分:9)
$.fn.something= function{};
指向jQuery.prototype并允许通过“this”访问dom元素。现在你可以使用$(selector).something();
所以这就像$(selector).css();
$.something = function{};
向jQuery对象本身添加属性或函数,你不能使用“this”进行dom访问
现在你可以将它用作$.something()
;这作为$.trim()
但是
$.fn.extend({function1(), function2()}) and $.extend({function1(), function2()})
允许同时添加多个函数。如果我们提供多个对象,它们也可用于合并两个对象文字。