jQuery(. .).Plugin不是一个函数,因为js文件没有加载

jQuery(...).plugin is not a function because js file is not loaded

本文关键字:js 因为 文件 加载 一个 Plugin jQuery 函数      更新时间:2023-09-26

我使用了一个插件(在这个例子中它是选择性的)。我只在产品页面加载插件javascript文件。

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

如果我转到另一个页面,然后是产品页面,我得到一个jQuery(...).selectric is not a function错误。

我明白为什么我得到错误,因为插件javascript文件不包括在头部(仅在产品页面上)。

但是有什么我可以把周围的jQuery('.myselectpicker').selectric({});代码,所以它不会返回一个错误在其他页面上而不是产品页面?
我不想将代码添加到插件javascript文件中,也不想将代码添加到仅加载在产品页面上的单独javascript文件中。出于性能考虑,我不想在每种页面类型中都包含所有javascript文件

您可以使用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({});
} 

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

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

这将给出一个错误-所以可以与isFunction结合(见其他答案,不需要在这里重复)-但是,会让你知道哪些页面需要插件,但缺少它,而不是只是缺少功能而没有警告。