WordPress 与 OOP jQuery Slider 插件冲突

Posted

技术标签:

【中文标题】WordPress 与 OOP jQuery Slider 插件冲突【英文标题】:WordPress conflict with OOP jQuery Slider Plugin 【发布时间】:2014-03-01 16:31:21 【问题描述】:

我制作了一个滑块插件,我正在尝试将其移植到 WordPress。但是,当“$”选择器出现时,代码不会运行。

这是我的插件的基本结构,因此您将了解我构建此插件的 OOP 基础。我已经尝试过警报以查看错误在哪里。它似乎就在第一个 $ 符号出现之后。

function slider(target, options) 
    /* Settings
     =============================== */
    var settings = $.extend(
        animation: "myanimation"            
    , options);
    alert('qq');

    /* Variables
     =============================== */
    var self = this;


    /* Initialization
     =============================== */
    self.init = function() 

并运行插件:

jQuery(function($)
   var myslider = new slider();
   myslider.init();
)

你能帮我解决一下吗?非常感谢!

【问题讨论】:

【参考方案1】:

许多 javascript 库使用 $ 作为函数或变量名,就像 jQuery 一样。在 jQuery 的例子中,$ 只是 jQuery 的别名,所以所有功能都可以在不使用 $ 的情况下使用。如果您需要在 jQuery 旁边使用另一个 JavaScript 库,请通过调用 $.noConflict() 将 $ 的控制权返回给另一个库。

jQuery.noConflict

【讨论】:

尽管我真的不明白为什么它不能与 IIFE 一起工作,但 noConflict 成功了。谢谢!【参考方案2】:

尝试使用IIFE,并将jQuery 作为参数传递:

(function($)
  function slider(target, options) 
    /* Settings */
    var settings = $.extend(
      animation: "myanimation"
    , options);
    alert('qq');

    /* Variables */
    var self = this;


    /* Initialization */
    self.init = function() 
  
)(jQuery);

【讨论】:

不幸的是,通过使用它,当我创建滑块的实例时,我在控制台中收到“对象不是函数”错误。不过,谢谢你的提示,读得很好。 阅读本指南以使用 IIFE 实现您的功能:developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Closures

以上是关于WordPress 与 OOP jQuery Slider 插件冲突的主要内容,如果未能解决你的问题,请参考以下文章

jQuery slideToggle 问题与 Wordpress 和 flexslider 中的标题有关

自动更改背景颜色循环(jQuery/css?)

JQuery OOP 及 OOP思想的简易理解

为啥 jQuery 似乎不鼓励使用常规 OOP?

jQuery 和 Wordpress

jquery 不能在 wordpress 中工作