我该如何解决这个jQuery插件冲突?

时间:2011-06-30 07:15:43

标签: jquery jquery-ui jquery-plugins

我正在使用两个不同的jQuery插件;一个用于新闻标识自动收报机,另一个用于水平文本滑块。

但是只有其中一个工作的时候在单页中使用时可能是因为jQuery冲突..如果我评论第一个插件第二个插件工作正常,反之亦然。

以下是代码:

<script type="text/javascript" src="js/jquery.js"></script>
    <script type="text/javascript" src="js/jquery.newsticker.js"></script>
    <script type="text/javascript">
        jQuery(document).ready(
            function()
            {
                jQuery("#news").newsTicker();
                jQuery("#development").newsTicker();                
            }
        );
    </script>
    <link href="css/style.css" rel="stylesheet" type="text/css">            
    <link rel="stylesheet" type="text/css" href="plugins/image_slider/css/sliderman.css" /> 


    <link type="text/css" href="css/humanity/jquery-ui-1.8.13.custom.css" rel="stylesheet" />   
    <script type="text/javascript" src="js/jquery-1.5.1.min.js"></script>
    <script type="text/javascript" src="js/jquery-ui-1.8.13.custom.min.js"></script>
    <script type="text/javascript">
        jQuery(function(){
            jQuery("#accordion").accordion({ header: "h3" });
        });
    </script>
    <link rel="stylesheet" href="css/news.css" type="text/css" media="screen">
    <script src="js/jcarousellite_1.0.1c4.js" type="text/javascript">  
</script>

谢谢!

4 个答案:

答案 0 :(得分:2)

尝试安排脚本参考:

1)jquery

2)jquery-ui

3)newsticker

并在调用任何与jquery相关的方法之前将其添加到页面顶部。

不是100%确定这是否有效,但试一试。

不知道您正在使用哪个版本的newsticker,但请查看此link

答案 1 :(得分:2)

  1. 仅添加jQuery.noConflict();并不总是足够的。您可能还需要使用jQuery替换所有出现的$。困难在于,变量通常被定义为$a_variable_name,替换$ in变量将导致错误。

    看看您是否可以找到已经进行noConflict编辑的tipsy版本。另请注意,通常需要添加noConflict并将$ jQuery替换为其他jQuery脚本,尤其是当该脚本依赖于另一个时。

    这确实解决了冲突,因为我已经这样做了一段时间。另请注意,如果您始终使用jQuery,则通常不需要这些编辑。

  2. 加载脚本文件的顺序也很重要,请尝试重新排列。

  3. 仅在需要时执行脚本。换句话说,如果某段代码导致冲突,请使用脚本标记从需要的页面加载,而不是在标题中加载。

答案 2 :(得分:1)

您可能需要声明变量。因为$正在使用像prototype这样的其他js框架。 所以只需将脚本置于脚本顶部即可。

var jQuery = jQuery.noConflict(); 

答案 3 :(得分:0)

在我的网页上使用大量插件时遇到了同样的问题。最简单的解决方案是拥有所有.js文件的连接文件,并在头部有一个包含。您还可以缩小(缩小在线工具)连接文件并仅包含最小版本。这应该可以解决问题。

另一种方法是在调用插件中的函数之前确保插件可用。尝试使用jquery的getScript来确保加载两个插件并在getScript的成功处理程序中进行插件的函数调用