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原型对象。