我有一个WordPress主题,我在其中使用了一些jQuery插件。问题是其中一些插件包含在其他WP插件中,因此js因命名冲突而中断。
我想知道是否有办法以某种方式将一组函数或.js文件与HTML文档中包含的其余脚本隔离开来。
类似的东西:
function wrap(){
plugin functions...
plugin functions...
}
jQuery(document).ready(function($){
wrap.pluginfunction()...
wrap.pluginfunction()...
});
答案 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();
即可设置。