Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery-函数冲突_Javascript_Jquery_Jquery Plugins - Fatal编程技术网

Javascript jQuery-函数冲突

Javascript jQuery-函数冲突,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,我有一个WordPress主题,我正在其中使用一些jQuery插件。问题是这些插件中的一些包含在其他WP插件中,因此js因命名冲突而中断 我想知道是否有办法将一组函数或.js文件与HTML文档中包含的其余脚本隔离开来 比如: function wrap(){ plugin functions... plugin functions... } jQuery(document).ready(function($){ wrap.pluginfunction()... wrap

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

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

比如:

function wrap(){

  plugin functions...
  plugin functions...

}

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

jQuery有一个
noConflict()
方法,因此它不会杀死其他库


只需调用
jQuery.noConflict()

jquery有一个
noConflict()
方法,因此它不会杀死其他库


只需调用
jQuery.noConflict()加载jquery库后,您应该进行设置。

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

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
等成员。在匿名外部函数中声明但未通过
公开的任何变量,该
对象将无法从脚本外部访问。

最简单的方法是如下包装整个脚本:

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
等成员。在匿名外部函数中声明但未通过
公开的任何变量,该
对象将无法从脚本外部访问。

是的,但在我的情况下,这些是加载两次的相同库。我认为,
noConflict()
适合jQuery与其他JS框架一起使用。我需要一种方法来安全地运行两个具有相同功能的脚本:)@Alex:在这种情况下,我唯一能想到的其他选项是:1。使用iframe2。更改代码的顺序,这样冲突就不会困扰您是的,但在我的例子中,这些库加载了两次。我认为,
noConflict()
适合jQuery与其他JS框架一起使用。我需要一种方法来安全地运行两个具有相同功能的脚本:)@Alex:在这种情况下,我唯一能想到的其他选项是:1。使用iframe2。更改代码的顺序,这样冲突就不会打扰您了,谢谢!以及如何从
jQuery(document).ready(function($){})访问这些函数
?作为
someNewNamespace.someFunction()
等。您在匿名函数中的
对象上创建的成员将成为
someNewNamespace
对象的成员。如果我有,例如
$(“.menu”).superfish()我在哪里附加
someNewNamespace
?啊哈,所以他们安装了jQuery插件函数。这需要一个完全不同的方法。。。很遗憾,基本上,您只需重命名所有函数即可(问题是当我更新这些插件时。我必须重新命名函数:(谢谢!我如何从
jQuery(document).ready(function($){});
?As
someNewNamespace.someFunction()访问这些函数?)
等。您在匿名函数中的
对象上创建的成员将成为
someNewNamespace
对象的成员
someNewNamespace
我应该在哪里附加
someNewNamespace
?啊哈,所以他们安装了jQuery插件函数。这需要一种完全不同的方法…基本上,你只需要重命名所有函数,不幸的是。:(问题是当我更新这些插件时。我必须重新重命名函数:(