如何让jQuery Libraries不会相互影响?

时间:2011-03-25 15:44:18

标签: jquery conflict

我的jQuery源彼此冲突。这些库包含相同的字母变量。换句话说,compressed.js和google.com/jsapi。使用相同的变量有一个简单的方法吗?

<script type="text/javascript" src="compressed.js"></script>
<script type="text/javascript">
$('slideshow').style.display='none';
$('wrapper2').style.display='block';
var slideshow=new TINY.slideshow("slideshow");
window.onload=function(){
    slideshow.auto=false;
    slideshow.speed=5;
    slideshow.info="information";
    slideshow.thumbs="slider";
    slideshow.left="slideleft";
    slideshow.right="slideright";
    slideshow.scrollSpeed=4;
    slideshow.spacing=5;
    slideshow.active="#fff";
    slideshow.init("slideshow","image");
}
</script>

第二个冲突集:

<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript">
 google.load('search', '1', {language : 'en', style : google.loader.themes.SHINY});
 google.setOnLoadCallback(function() {
var customSearchControl = new google.search.CustomSearchControl('012677673255316824096:sean13fvlei');
customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);
var options = new google.search.DrawOptions();
options.setSearchFormRoot('cse-search-form');
customSearchControl.draw('cse', options);
  }, true);
</script>

3 个答案:

答案 0 :(得分:3)

你也可以尝试一下;

将所有$$(替换为dbl(,将$(替换为javascript文件中的sgl( compressed.js )。

然后在html文件中,您需要更改代码的前两行,如下所示;

sgl('slideshow').style.display='none';
sgl('wrapper').style.display='block';

答案 1 :(得分:2)

问题是此脚本标记中的JavaScript文件(full URL):

<script type="text/javascript" src="compressed.js"></script>

定义此功能:

function $(i) {
    return document.getElementById(i)
}

但是$是jQuery使用的变量 - 因此使用$.noConflict()的建议无意中是正确的。您正在尝试使用Prototype和jQuery,两者都尝试使用$。你正在使用的Tiny Slideshow用于Prototype,而不是jQuery - 只是因为库定义$并不意味着它是jQuery!

所以,是的,你应该阅读,理解,并使用$.noConflict()说明。

答案 2 :(得分:0)

添加gsearch插件,然后执行jQuery.noConflict()

<script type="text/javascript" src="http://google.com/jsapi"></script>
                    <script type="text/javascript">google.load("jquery", "1");</script>
                    <script type="text/javascript">google.load("search", "1");</script>
                    <script type="text/javascript" src="/js/jquery.gSearch-1.0-min.js"></script>
                    <script>

                    jQuery.noConflict();
                    jQuery(document).ready(function()     {     
                                jQuery("#search-results").gSearch({
                                            search_text : 'what you want to search',
                                            count : 8,
                                            site : 'your site url',
                                            pagination : true            
                                });
                    });    


                    </script>

旁注:google不会发出api密钥,因此请将其删除,请注意以下链接: http://gsearch.scottreeddesign.com/documentation.html