Javascript jQuery-函数冲突
我有一个WordPress主题,我正在其中使用一些jQuery插件。问题是这些插件中的一些包含在其他WP插件中,因此js因命名冲突而中断 我想知道是否有办法将一组函数或.js文件与HTML文档中包含的其余脚本隔离开来 比如: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
function wrap(){
plugin functions...
plugin functions...
}
jQuery(document).ready(function($){
wrap.pluginfunction()...
wrap.pluginfunction()...
});
jQuery有一个
noConflict()
方法,因此它不会杀死其他库
只需调用
jQuery.noConflict()加载jquery库后,应该设置code>。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($){});
?AssomeNewNamespace.someFunction()访问这些函数?)
等。您在匿名函数中的对象上创建的成员将成为someNewNamespace
对象的成员
someNewNamespace
我应该在哪里附加someNewNamespace
?啊哈,所以他们安装了jQuery插件函数。这需要一种完全不同的方法…基本上,你只需要重命名所有函数,不幸的是。:(问题是当我更新这些插件时。我必须重新重命名函数:(