2011-03-25 39 views
2

我的jQuery資源互相沖突。這些庫包含相同的字母變量。換句話說,compressed.js和google.com/jsapi。使用相同的變量是否有一個簡單的方法呢?我該如何製作jQuery庫不會互相影響?

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

這確實讓我想知道爲什麼這些腳本首先使用全局變量。 – Powerlord 2011-03-25 15:46:02

+0

哪些變量名稱衝突? – 2011-03-25 15:50:12

+0

我想象它是「選項」加載的插件使用它。有些甚至將其視爲全球性的。 – 2011-03-25 15:54:59

回答

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()說明。

+0

我只是重命名var $,還是必須單獨重命名每個重複字母var,如m,a,b,c等? – Stephanie 2011-03-25 18:52:18

+0

由於您要並排使用Prototype和jQuery,因此您只需調用'jQuery.noConflict()',並使用'jQuery'(這是一個變量名)而不是使用'$'來表示jQuery 。 – 2011-03-25 19:15:46

+0

如果我誤解了你的問題,我很抱歉。 '$'_應該是唯一有衝突的變量名稱。在JavaScript中,變量名稱可以重用,只要它們在不同的範圍內 - 因此不需要重命名每個重複的變量名稱。這是否回答你的問題? – 2011-03-25 19:53:00

3

你也可以試試這個;

替換所有$$(dbl($(sgl(在JavaScript文件(compressed.js)。

然後在html文件中需要更改代碼的前兩行,如下所示;

sgl('slideshow').style.display='none'; 
sgl('wrapper').style.display='block'; 
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> 

邊注:谷歌不發出的API密鑰,以便考慮到這一點刪除它看到此鏈接: http://gsearch.scottreeddesign.com/documentation.html