jQuery(...)。插件不是函数,因为未加载js文件

时间:2016-11-03 09:56:30

标签: javascript jquery html plugins jquery-plugins

我使用插件(在这个例子中它是selectric)。我只在产品页面上加载了插件javascript文件。

我使用的代码是:jQuery('.myselectpicker').selectric({});,位于每个页面上加载的自定义javascript文件中。

如果我转到其他页面然后转到产品页面,则会出现jQuery(...).selectric is not a function错误。

我理解为什么会收到错误,因为插件javascript文件不包含在头部(仅限产品页面)。

但是我可以在jQuery('.myselectpicker').selectric({});代码周围添加一些内容,以便它不会在产品页面以外的其他页面上返回错误吗?
我不想将代码添加到插件javscript文件中,也不想添加到仅在产品页面上加载的单独的javascript文件中。
出于性能原因,我不想在每种页面类型中包含所有javascript文件。

2 个答案:

答案 0 :(得分:1)

您可以使用jquery' isFunction函数 - https://api.jquery.com/jQuery.isFunction/

// Will trigger selectric() function only if it's lib included
if( $.isFunction( $.fn.selectric ) ){
    jQuery('.myselectpicker').selectric({});
} 

答案 1 :(得分:0)

检查是否加载了selectric的另一种方法是检查页面上的任何元素是否需要它,即:

if (jQuery('.myselectpicker').length > 0)
    jQuery('.myselectpicker').selectric({});

这会产生错误 - 所以可以与isFunction结合使用(参见其他答案,不需要在此重复) - 但是,会让你知道哪些页面需要插件但却缺少它,而不是只是在没有警告的情况下缺少功能。