【问题标题】:jQuery(...).plugin is not a function because js file is not loadedjQuery(...).plugin 不是函数,因为未加载 js 文件
【发布时间】:2016-11-03 09:56:30
【问题描述】:

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

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

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

我明白为什么会出现错误,因为插件 javascript 文件未包含在头部(仅在产品页面上)。

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

【问题讨论】:

    标签: javascript jquery html plugins jquery-plugins


    【解决方案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({});
    } 
    

    【讨论】:

    • 这正是我想要的。不知道isFunction 函数。
    【解决方案2】:

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

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

    这将给出一个错误-因此可以与isFunction结合使用(请参阅其他答案,无需在此处重复)-但是,会让您知道哪些页面需要插件但缺少它,而不仅仅是缺少没有警告的功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-10
      • 1970-01-01
      • 1970-01-01
      • 2018-07-14
      相关资源
      最近更新 更多