0

我有一个使用一些 jquery 功能的网站。在主页上我使用了 Nivo Slider 插件,而在另一个页面上我使用了 Lightbox 效果。

在我的header.php文件中脚本的链接安排中,我在 Nivo Slider 链接下有灯箱链接。灯箱工作,但 Nivo 滑块不工作。当我重新排列时,滑块工作但灯箱不工作。

在这种情况下,灯箱工作,但滑块不起作用

<script type="text/javascript" src="js/jquery.nivo.slider.js"></script>

<script src="js/prototype.js" type="text/javascript"></script>      
<script src="js/scriptaculous.js?load=effects,builder" type="text/javascript"></script>
<script src="js/lightbox.js" type="text/javascript"></script>

这是正常的吗?我怎样才能让两者同时工作。

我的主页有滑块在这里

有灯箱的页面在这里

谢谢你。

4

2 回答 2

1

由于来自很多地方的大量代码,有些事情会停止工作。不能简单地假设添加少量单独工作的代码在集成在一起时会起作用。在这种特殊情况下,jQuery 和 Prototype 发生了争执。

这可以通过在顶部只加载一个 jQuery 来解决,然后包含这个小片段:

jQuery.noConflict();

然后 jQuery 不再接管该$变量。(您的代码还需要使用jQuery而不是考虑此更改$,但所有编写良好的插件都应与此更改进行良好的互操作。)

之后,您应该能够包含 Prototype 和其他插件。理论上,无论如何。


在实践中,Prototype 挂钩了其他一些东西。Array.​prototype.​reverse在您的特定情况下,它以 jQuery 插件不期望的方式挂钩,并且不知何故,它导致了堆栈溢出。我真的不知道如何在不破坏其中一个的情况下解决 Prototype 对该功能的劫持,因此您可能只想找到一个仅适用于 jQuery 的灯箱插件。

于 2013-02-10T00:36:31.220 回答
0

当您尝试调用它时,jQuery 不可用。你可以试着把所有的东西都移到身体的底部。还值得注意的是,您正在加载 jQuery 两次。

<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
<script src="js/jquery.min.js"></script>
于 2013-02-09T23:40:47.453 回答