我使用插件(在这个例子中它是selectric)。我只在产品页面上加载了插件javascript文件。
我使用的代码是:jQuery('.myselectpicker').selectric({});
,位于每个页面上加载的自定义javascript文件中。
如果我转到其他页面然后转到产品页面,则会出现jQuery(...).selectric is not a function
错误。
我理解为什么会收到错误,因为插件javascript文件不包含在头部(仅限产品页面)。
但是我可以在jQuery('.myselectpicker').selectric({});
代码周围添加一些内容,以便它不会在产品页面以外的其他页面上返回错误吗?
我不想将代码添加到插件javscript文件中,也不想添加到仅在产品页面上加载的单独的javascript文件中。
出于性能原因,我不想在每种页面类型中包含所有javascript文件。
答案 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
结合使用(参见其他答案,不需要在此重复) - 但是,会让你知道哪些页面需要插件但却缺少它,而不是只是在没有警告的情况下缺少功能。