javascript在头文件中的安排影响功能

时间:2013-02-09 23:29:43

标签: javascript jquery css

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

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

在这种情况下,LightBox可以正常工作,但滑块不起作用

<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>

这是正常的吗?如何让两者同时工作。

我的主页有滑块Here

拥有灯箱的网页为here

谢谢。

2 个答案:

答案 0 :(得分:1)

有很多地方的代码,有些东西停止工作。人们不能简单地假设添加一些单独工作的代码将在集成在一起时起作用。在这种特殊情况下,jQuery和Prototype正在战斗。

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

jQuery.noConflict();

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

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


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

答案 1 :(得分:0)

当你试图调用它时,jQuery不可用。你可以尝试将一切都移到身体的底部。另外值得注意的是你要加载jQuery两次。

<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
<script src="js/jquery.min.js"></script>