jQuery测试对象是否有方法?

Jim*_*ler 22 jquery

是否可以测试jQuery对象是否具有特定方法?我一直在寻找,但到目前为止还没有成功.谢谢!

hun*_*ter 43

这应该工作:

if (!!$.prototype.functionName)
Run Code Online (Sandbox Code Playgroud)


use*_*716 20

因为jQuery方法是jQuery对象的原型,所以可以从原型对象中测试它.

if( $.isFunction( $.fn.someMethod ) ) {
    // it exists
}
Run Code Online (Sandbox Code Playgroud)

这使用jQuery.isFunction()[docs]方法来查看是否$.fn.someMethod确实是一个函数.(在jQuery中jQuery.fn是对原型对象的引用.)

  • +1.这是唯一一个实际检查它是否是一个calalble函数,而不仅仅是一个成员变量... (2认同)
  • 对于那些可能和我一样慢的人:例如,如果你正在检查UI Tabs方法是否存在,请使用`$ .isFunction($ .fn.tabs)`.嘿,我需要一个具体的例子; 也许其他人也这样做. (2认同)

qwe*_*ymk 5

尝试

if ($.fn.method) {
    $('a').method(...);
}
Run Code Online (Sandbox Code Playgroud)

或者

if ($.method) {
    $.method(...);
}
Run Code Online (Sandbox Code Playgroud)

  • -1,您在第一个示例中不必要地调用了 jQuery,速度慢了 90% 以上!http://jsperf.com/jquery-vs-jquery-fn (2认同)