jQuery中的isFunction()总是返回false

4

我正在使用qtip实现超级简单的工具提示。

我不会在每个页面上都包含qtip,只有需要的页面才会使用,所以我尝试在调用它之前检查qtip是否存在。

 /*
  * Tool Tip
  * inits qtip on any link with class="tt"
  */
  if( $.isFunction( $.qtip ) ){
  $(".tt").qtip();
  }

我不知道为什么这个不起作用。它总是返回false。有任何想法吗?谢谢。

6个回答

11

我认为你应该检查一下

if($.isFunction($.fn.qtip))

刚刚遇到了同样的“噢”时刻。感谢您发布答案 :) - hsatterwhite

1

试试这个:

if( $.isFunction( $.fn.qtip ) ){
    $(".tt").qtip();
}

由于插件驻留在$.fn对象中


1

我更喜欢使用 typof 运算符,因为它不依赖于 jQuery。

if(typeof window.myFunction == 'function') {
    // function exists, so we can now call it
    myFunction();
}

顺便说一下,这是一个很好的方法来“扩展”JavaScript,如果某些东西存在(比如表单验证)


由于 qtip 函数本身依赖于 jQuery,因此我使用 isFunction 没有任何问题。 - CreativeNotice

0
如果实现在您的所有页面上都是一致的,那么只需放置即可。
$(function(){
    $(".tt").qtip();
}

在 qtip.js 文件底部,这样它就会在包含 qtip 时执行。

转念一想,这可能是个糟糕的计划,在六个月后会非常混乱! - Paul Creasey

0
if( $.isFunction(qtip) ){
 //bla bla
}

尝试这个或者用逗号

if( $.isFunction("qtip") ){
     //bla bla
    }

无法工作,因为qtip驻留在jQuery fn对象中 -> jQuery.fn - Juraj Blahunka

0
尝试在 isFunction 检查中的 qtip 前面移除 "$."。

qtip 是一个 jQuery 插件,因此它无法删除 jQuery 的美元符号 $ - Juraj Blahunka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接