javascript - 检查 JavaScript 函数是否是 jQuery 元素的方法

标签 javascript jquery function instanceof typeof

如何检测函数是否是 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 行需要帮助。

互动版:

http://jsfiddle.net/sxduwke9/

最佳答案

没有。但是您可以完全删除 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/

相关文章:

c++ - 寻求对 constexpr 功能的澄清

php - 它没有在数据库中插入正确的值?

javascript - 动态附加元素后重新应用样式属性

javascript - 筛选具有多个值的表

javascript - 选择相对于 'this' 的父元素的兄弟,然后选择子元素

javascript - 使用 Internet Explorer 时,jQuery JSONP 请求经常失败

javascript - 工厂功能原型(prototype)

R函数不循环遍历列但重复第一行结果

javascript - 未捕获的类型错误 : Object [object Object] has no method "fancybox"

javascript - Javascript 中的时间到秒和秒到时间