我正在尝试理解jquery插件的语法,因为我想把两个插件合并成一个。这个blinker也需要能够停止de interval或者运行很多次。
不管怎样,这个语法和
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",
(this来自计时器插件)
5条答案
按热度按时间bhmjp9jg1#
extend用于为任何对象扩展额外的函数,但jQuery.fn.extend用于扩展jQuery.fn对象,实际上它一次添加了多个插件函数(而不是分别为每个函数赋值)。
jQuery.扩展:
jQuery.fn.扩展:
czfnxgou2#
用法:
$.abc()
。(不需要像$.ajax()
这样的选择器。)用法:
$('.selector').xyz()
。(需要选择器,如$('#button').click()
。)它主要用于实现
$.fn.each()
。rpppsulh3#
jQuery. extend和jQuery. fn. extend的区别是什么?
实际上,除了它们的基引用之外,没有其他的引用。在jQuery源代码中,您可以看到:
那么它是如何工作的呢?documentation读取:
将两个或多个对象的内容合并到第一个对象中。
它只是一个复制属性的for循环,加上一个标记来递归嵌套对象。
如果只为
$.extend()
提供了一个参数,则意味着省略了目标参数因此,如果在
jQuery
本身上调用函数(没有显式目标),它将扩展jQuery名称空间;如果在jQuery.fn
上调用函数(没有显式目标),它将扩展所有(插件)方法所在的jQuery原型对象。fiei3ece4#
This blog post有很好的描述:
引言:
ne5o7dgx5#
指向jQuery.prototype,并允许通过“this”访问dom元素。现在你可以使用
$(selector).something();
,所以它像$(selector).css();
一样作为插件函数工作添加一个属性或函数到jQuery对象本身,而u不能使用“this”进行dom访问。现在u可以使用它作为
$.something()
;它作为$.trim()
的实用函数工作但是
允许同时添加多个函数。2当我们提供多个对象时,它们也可以用来合并两个对象。