在将其添加到自定义Wordpress主题之前,我已经设置了一个测试html页面来与bgStretcher一起玩。当我使用jQuery版本时,它工作正常:
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.min.js"></script>
on,但是当我使用Wordpress中包含的版本时它停止工作:
<script type="text/javascript" src="http://pebbl.es/test/wp-includes/js/jquery/jquery.js?ver=1.6.1"></script>
我在两个文件之间看到的唯一区别是WP版本最后会阻止jQuery冲突,调用noConflict()。
页面(下面的html)加载第一个图像,但控制台输出错误:
未捕获的TypeError:无法读取未定义的属性“fn” (匿名函数)
现场版本已开启:http://pebbl.es/test/test。有关如何解决此问题的想法?我可以看到它是一个冲突错误,但我看不到在哪里/如何修复它?非常感谢。
<html>
<head><title>Test</title>
<script type='text/javascript' src='http://pebbl.es/test/wp-includes/js/jquery/jquery.js?ver=1.6.1'></script>
<script type="text/javascript" src="bgstretcher.js"></script>
<link rel="stylesheet" type="text/css" href="bgstretcher.css">
<script type="text/javascript">
jQuery(document).ready(function($){
jQuery('body').bgStretcher({
images: ['Rochy_Coleccion1.jpg', 'Rochy_Coleccion2.jpg'], imageWidth: 1024, imageHeight: 748
});
});
</script>
</head>
<body>
</body>
</html>
答案 0 :(得分:2)
命名空间你的jQuery:http://api.jquery.com/jQuery.noConflict/
在两个脚本标记之间添加:
var $my_jq = jQuery.noConflict();
在此之后,你有1.6.1 jQuery没有冲突模式。
在此之后,您必须使用变量名称来调用它,例如$my_jq('#content')
<强>更新强>
这可能不起作用,我发现你没有加载2个不同的jQuerys,当你尝试将bgstretcher与一个已经处于noConflict模式的jQuery一起使用时,会出现问题。
我不是wordpress专家,但您可能只需更改wordpress jQuery即可使用您的变量名称。您可以在noConflict模式下设置jQuery,无论是否将其命名为变量,它看起来像你的wordpress JQ没有。 或者您可以先加载自己的jQuery,命名它,然后将其用于bgstretch。 问题是noConflict调用再次“释放”$变量以用于同样想要使用它的不同框架,所以你的bgstretch在尝试调用$时会出错。
或者只是尝试完全删除noConflict并查看它是否对你的wordpress安装有任何影响(它不应该,我想这只是为了让WP用户能够使用不同的JS框架)。
希望你能解决它。