2009-03-20 3 views
1

Я пытаюсь одновременно использовать как jQuery, так и Prototype.конфликт jQuery и Prototype

Я потратил часы и часы на поиск решений, чтобы устранить эту проблему. Самый распространенный метод, который я нашел, - это http://docs.jquery.com/Using_jQuery_with_Other_Libraries. Однако он не работал независимо от того, как я размещаю код jQuery.noConflict().

Может ли кто-нибудь помочь мне с этим?

Заранее спасибо

Вот мой код

<script type="text/javascript" src="/js/swfobject.js"> 
</script> 
<script type="text/javascript" src="/js/layerswitch.js"> 
</script> 
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> 
</script> 
<script type="text/javascript"> 
    _uacct = "UA-2351815-2"; 
    urchinTracker(); 
</script> 
<script type="text/javascript" src="/js/jquery-1.3.2.min.js"> 
</script> 
<script type="text/javascript" src="/js/fadeLinks.js"> 
</script> 
<script> 
    jQuery.noConflict(); 
    jQuery(document).ready(function($){ 
     $("#example").autocomplete(options); 
    }); 
</script> 
<script src="js/prototype.js" type="text/javascript"> 
</script> 
<script src="js/scriptaculous/scriptaculous.js" type="text/javascript"> 
</script> 
<script src="js/recommended_items.js" type="text/javascript"> 
</script> 
<script type="text/javascript"> 
//<![CDATA[ 
Event.observe(window, 'load', function() { 
    var recommended_items = new RecommendedItems('recommended_items', <?="$store_id, $gift_registry_id" ?>); 
    recommended_items.setBaseURL('<?=$site_server . SITE_STANDARD ?>'); 
<?php if (THIS_PAGE == PRODUCT_PHP) { ?> 
    recommended_items.setProduct(<?="$product_id, $category_id" ?>); 
<?php }        ?> 
    recommended_items.fetchItems(); 
}); 
//]]> 
</script> 

ответ

3

Оберните ваш код JQuery как так

(function($) { 

//$.noConflict(); // I don't below this is needed following this pattern 

$(function() // shorthand for $(document).ready() 
{ 
    $("#example").autocomplete(options); 
}); 


})(jQuery); 

В сущности, $ относится к jQuery объекта внутри функции

+0

Функция, переданная в jQuery (документ) .ready получает объект jQuery при его вызове. Следовательно, внутри функции она должна быть равна $. – Annan

+0

Большое спасибо. Тем не менее, он по-прежнему не работает на моем конце - - – Kev

+0

@ Kev - Вы пробовали отладку с Firebug? –

2

Вы можете назначить свой вызов jQu ery.noConflict() для переменной, а затем использовать эту переменную, когда вы хотите использовать JQuery. Итак:

<script> 
    var $$ = jQuery.noConflict(); 
    jQuery(document).ready(function($){ 
     $$("#example").autocomplete(options); //jQuery selector 
     alert($("#example".val()); //prototype selector 
    }); 
</script> 
+0

аккуратный, $$ используется prototype.js как CSS-селектор для элементов DOM. –

+0

еще лучше символ $ j для jQuery doco. – ybakos