我正在使用稱爲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&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
你能提供更多的信息,究竟什麼是不工作?我沒有看到對jQuery.noConflict()的調用,並且由於所引用的文件沒有公開,因此無法查看究竟是或不在發生什麼。 – bstakes
我編輯了我的編輯 – Griffin
爲什麼你沒有從nivo獲得nivo? http://nivo.dev7studios.com/ – Sinetheta