如何检测函数是否是 jQuery 元素的方法?
例如,$.fn.fadeIn
是一个函数:
typeof $.fn.fadeIn === 'function'//true
但是,我需要一种方法来将它与常规的非 jQuery 方法区分开来。目标是能够将函数作为参数传递,然后正确调用该函数。
下面是一个使用名为 doIt
的函数的示例,该函数接受一个 jQuery 元素和一个要应用于该元素的函数。
示例 HTML:
<h1>jQuery Function Test</h1>
<p class=t1>Highlight this line.</p>
<p class=t2>Hide this line.</p>
示例 JavaScript:
function doIt(elem, func) {
if (func === 'a jQuery function') //possible?
func.apply(elem);
else
func(elem);
}
function highlight(elem) {
elem.css('background-color', 'gold');
}
doIt($('p.t1'), highlight);
doIt($('p.t2'), $.fn.fadeOut);
JavaScript 的第 2 行需要帮助。
互动版:
最佳答案
没有。但是您可以完全删除 if 语句:
function doIt(elem, func) {
func.apply(elem);
}
function highlight() {
this.css('background-color', 'gold');
}
doIt($('p.t1'), highlight);
doIt($('p.t2'), $.fn.fadeOut);
如果你想传递更多参数,这里有一个简单的例子:
function doIt(elem, func) {
var args = Array.prototype.slice.call(arguments, 2);
func.apply(elem, args);
}
function highlight(color) {
this.css('background-color', color);
}
doIt($('p.t1'), highlight, 'gold');
doIt($('p.t2'), $.fn.fadeOut);
关于javascript - 检查 JavaScript 函数是否是 jQuery 元素的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25514886/