jQuery - 函数冲突

时间:2010-11-27 03:55:15

标签: javascript jquery jquery-plugins

我有一个WordPress主题,我在其中使用了一些jQuery插件。问题是其中一些插件包含在其他WP插件中,因此js因命名冲突而中断。

我想知道是否有办法以某种方式将一组函数或.js文件与HTML文档中包含的其余脚本隔离开来。

类似的东西:

function wrap(){

  plugin functions...
  plugin functions...

}

jQuery(document).ready(function($){
   wrap.pluginfunction()...
   wrap.pluginfunction()...
});

2 个答案:

答案 0 :(得分:2)

最简单的方法是将整个脚本包装成这样:

var someNewNamespace = (function () {
    // Script goes here

    // If you want to expose functions on the namespace:
    var that = {};

    // Declare a new function to expose:
    that.someFunction = function () {
        // ...
    };

    // Expose a function declared previously:
    that.someOtherFunction = someFunctionDeclaredPreviously;

    return that;
}();

这将有效地为脚本创建一个新的命名空间。执行后,someNewNamespace对象将包含someFunction等成员。在匿名外部函数中声明但未通过that对象公开的任何变量将无法从脚本外部访问。

答案 1 :(得分:1)

jQuery有一个noConflict()方法,所以它不会杀死其他库。

加载jquery库后,只需调用jQuery.noConflict();即可设置。