2011-07-28 15 views
0

我正在使用稱爲Magebridge的joomla和magento橋樑。我已經開始開發一個joomla模板,它在主頁和工具提示上使用一些jquery來處理像NivoSlider這樣的事情。當我在一個普通的joomla網站上使用這個模板時,它可以正常工作,但是當我使用將Prototype帶入組合的橋時,我會收到錯誤和其他不愉快的東西。joomla + jquery +原型。無法讓無衝突工作。

現在經過搜索,似乎通用的解決方案將是在noconflict模式下使用jquery,現在我嘗試了很多不同的方式,但似乎無法使它工作。

我在內聯腳本和外部.js文件的組合中使用jquery。看的網站,我可以看到protoype最終的源代碼被jQuery的之前調用(這裏是頭部的一部分):

<head> 
    <base href="http://127.0.0.1/meade/" /> 
    <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
    <meta name="robots" content="index, follow" /> 
    <meta name="generator" content="Joomla! 1.7 - Open Source Content Management" /> 
    <title> Home page </title> 
    <link href="http://127.0.0.1/meade/component/search/?format=opensearch" rel="search" title="Search Meade Instruments" type="application/opensearchdescription+xml" /> 
    <link rel="stylesheet" href="/meade/media/com_magebridge/css/default.css" type="text/css" /> 
    <link rel="stylesheet" href="http://127.0.0.1/store.meade/skin/frontend/default/default/css/styles.css" type="text/css" media="all"/> 
    <!--[if lt IE 8 ]> 
<link rel="stylesheet" href="http://127.0.0.1/store.meade/skin/frontend/default/default/css/styles-ie.css" type="text/css" media="all"/> 
<![endif]--> 
    <link rel="stylesheet" href="http://127.0.0.1/store.meade/skin/frontend/base/default/css/widgets.css" type="text/css" media="all"/> 
    <link rel="stylesheet" href="http://127.0.0.1/store.meade/skin/frontend/default/default/css/print.css" type="text/css" media="print"/> 
    <script type="text/javascript" src="/meade/media/com_magebridge/js/footools.min.js"></script> 
<script type="text/javascript"> 
//<![CDATA[ 
var BLANK_URL = 'http://127.0.0.1/store.meade/js/blank.html'; 
var BLANK_IMG = 'http://127.0.0.1/store.meade/js/spacer.gif'; 
//]]> 
</script> 
    <script type="text/javascript" src="http://127.0.0.1/store.meade/js/index.php?c=auto&amp;f=,lib/ccard.js,prototype/validation.js,scriptaculous/builder.js,scriptaculous/effects.js,scriptaculous/dragdrop.js,scriptaculous/controls.js,scriptaculous/slider.js,varien/js.js,varien/form.js,varien/menu.js,mage/translate.js,mage/cookies.js"></script> 
    <!--[if lt IE 7 ]> 
<script type="text/javascript" src="http://127.0.0.1/store.meade/js/lib/ds-sleight.js"></script> 
<![endif]--> 
    <script type="text/javascript" src="http://127.0.0.1/store.meade/skin/frontend/base/default/js/ie6.js"></script> 
    <script type="text/javascript">var Translator = new Translate({"Please use only letters (a-z or A-Z), numbers (0-9) or underscore(_) in this field, first character should be a letter.":"Please use only letters (a-z or A-Z), numbers (0-9) or underscores (_) in this field, first character must be a letter."});</script> 

<link rel="stylesheet" href="/meade/templates/system/css/system.css" type="text/css" /> 
<link rel="stylesheet" href="/meade/templates/system/css/general.css" type="text/css" /> 
<link rel="stylesheet" href="/meade/templates/Meade/css/style.css" type="text/css" /> 
<link rel="stylesheet" href="/meade/templates/Meade/css/nivo-slider.css" type="text/css" /> 
<link rel="stylesheet" href="/meade/templates/Meade/nivo-slider/themes/default/default.css" type="text/css" /> 
<script type="text/javascript" src="/meade/templates/Meade/js/jquery-1.6.1.min.js"></script> 

<script type="text/javascript" src="/meade/templates/Meade/js/jquery.nivo.slider.pack.js"></script> 

現在,我已經嘗試過什麼官方的jQuery網站被添加的jQuery .noConflict();然後替換所有$(在我用jQuery添加的外部.js文件中,以及在某些內聯jquery中,由於某種原因我無法將其粘貼到此處),但那並不奏效,也試過用jQuery.noConflict();和(function($){$(function(){)的另一種變體,但似乎無法讓它工作,所以我想我只是不知道我是不是在做一個愚蠢的。語法錯誤,或者我如何使用noConflict模式的理解是完全脫落,一般

任何幫助,將不勝感激

謝謝

編輯:

好了,所以這是我現在有:

<script type="text/javascript" src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template?>/js/jquery-1.6.1.min.js"></script> 
<script type="text/javascript"> 
jQuery.noConflict(); 
</script> 
<script type="text/javascript" src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template?>/js/jquery.nivo.slider.pack.js"></script> 
<script type="text/javascript"> 
jQuery(window).load(function() { 

    jQuery('#slider').nivoSlider({ 
     effect:'boxRainGrowReverse', 
     controlNavThumbs:true, 
     prevText: ' ', 
     nextText: ' ', 
     pauseTime: 4000 
    }); 

}); 
</script> 

我仍然得到堆棧溢出錯誤和對象不支持錯誤。我查看了nivoslider js文件,看起來它已經保護了$符號。如果你認爲它可能是該文件的一部分,你可以在這裏找到它:http://www.2shared.com/document/Dz0_2rBD/jquerynivosliderpack.html

+0

你能提供更多的信息,究竟什麼是不工作?我沒有看到對jQuery.noConflict()的調用,並且由於所引用的文件沒有公開,因此無法查看究竟是或不在發生什麼。 – bstakes

+0

我編輯了我的編輯 – Griffin

+0

爲什麼你沒有從nivo獲得nivo? http://nivo.dev7studios.com/ – Sinetheta

回答

4

你在哪裏添加noConflict? 只有你寫的jquery需要被修改,以便通過它的全名(或者像j $這樣的別名)來引用jQuery對象。任何適當構建的插件將已經保護了美元符號。 如果您需要將自己的腳本添加到頁面,只需按照jQuery docs

<script src="jquery.js"></script> 
    <script> 
    jQuery.noConflict(); 
    </script> 

編輯除了體現後期編輯:

是的,你現在已經包括jQuery的在noConflict模式下正常,所以你需要編寫與「jQuery的」,而不是「$」電話。

一旦進入jQuery調用中,如果您願意,可以返回美元符號,但您必須從「函數」中請求它。

jQuery(window).load(function($) { 
    $('#slider').nivoSlider({ 
+0

剛試過這種方式,我仍然得到一個「對象不支持這個屬性或方法」的錯誤。我刪除了所有額外的代碼,只留下以下內容: Griffin

+0

好的格式化不起作用,所以我只是把它添加到我原來的帖子的末尾。 – Griffin

+0

我已經添加了一些更多的代碼到我的文章的結尾與新增加。仍然收到錯誤。我應該注意滑塊顯示,但幾秒鐘後,我得到stackoverflow錯誤和相同的對象不支持錯誤。我已經刪除了我的所有其他jQuery代碼,所以它現在只是滑塊...我想如果我可以得到這個工作生病嘗試應用解決方案的其他東西。 – Griffin