使用bgStretcher时可能存在jQuery冲突

时间:2011-12-01 11:43:34

标签: javascript jquery wordpress-theming

在将其添加到自定义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>

1 个答案:

答案 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框架)。

希望你能解决它。