扩展 jQuery addClass 以接受回调 - 它是如何工作的?
Extending jQuery addClass to accept callbacks - how does it work?
我是 jQuery
的新手,正在寻找一种方法来扩展 addClass
以接受回调。我找到了这个解决方案 here。下面是神奇的代码部分:
var oAddClass = $.fn.addClass;
$.fn.addClass = function () {
for (var i in arguments) {
var arg = arguments[i];
if ( !! (arg && arg.constructor && arg.call && arg.apply)) {
arg();
delete arg;
}
}
return oAddClass.apply(this, arguments);
}
谁能解释一下这里发生了什么?我掌握了编程术语的基本知识,并且我已经使用 jQuery
处理简单的内容,例如滚动广告。
此致,
努努
基本上它会遍历调用 addClass 时使用的所有参数。如果该参数是一个函数(通过 duck typing 发现该参数具有构造函数和 call/apply 方法),它将调用该函数并将其从 arguments arraylike 对象中删除。
最后,通过使用对原始 addClass 函数 (oAddClass) 的引用,将剩余的参数(非函数)应用到元素上,以便真正的 class 字符串也添加到元素。
作为旁注,为什么你需要对 setClass 进行回调,因为它不是异步的。
我是 jQuery
的新手,正在寻找一种方法来扩展 addClass
以接受回调。我找到了这个解决方案 here。下面是神奇的代码部分:
var oAddClass = $.fn.addClass;
$.fn.addClass = function () {
for (var i in arguments) {
var arg = arguments[i];
if ( !! (arg && arg.constructor && arg.call && arg.apply)) {
arg();
delete arg;
}
}
return oAddClass.apply(this, arguments);
}
谁能解释一下这里发生了什么?我掌握了编程术语的基本知识,并且我已经使用 jQuery
处理简单的内容,例如滚动广告。
此致,
努努
基本上它会遍历调用 addClass 时使用的所有参数。如果该参数是一个函数(通过 duck typing 发现该参数具有构造函数和 call/apply 方法),它将调用该函数并将其从 arguments arraylike 对象中删除。
最后,通过使用对原始 addClass 函数 (oAddClass) 的引用,将剩余的参数(非函数)应用到元素上,以便真正的 class 字符串也添加到元素。
作为旁注,为什么你需要对 setClass 进行回调,因为它不是异步的。