středa 9. listopadu 2011

TIP: Jak na Mootools & jQuery zároveň v jednom projektu

Upozornění: Tento článek je již zastaralý.
Ať už jste donuceni z jakéhokoli důvodu použít obě výše zmíněné Javascriptové knihovny na jednom projektu, možná se Vám bude hodit následující tip. Předem je třeba říct, že tyto knihovny skutečně mohou fungovat zároveň a nebude Vás to stát mnoho úsilí.

Jak jistě víte, jQuery i Mootools používají znak dolaru ($) jako zkratku pro volání funkce jenž je jádrem obou knihoven. Toto chování lze však u jQuery vypnout pomocí jednoduchého příkazu:

jQuery.noConflict();

Na internetu je mnoho diskuzí kde doporučují následující postup:

<script type="text/javascript" src="jquery-1.3.js"></script>
<script type="text/javascript">
jQuery.noConflict();
</script>
<script type="text/javascript" src="moo1.2.js"></script>

Všimněte si, že se zde prvně načítá jQuery, poté se vypne asociace k dolaru a nakonec se načítá Mootools. Toto řešení je ovšem docela nevzhledné a pokud používáte automatické načítání skriptů, je zbytečně obtížně realizovatelné.

Po pár hodinovém mlácení hlavy do stolu jsem nedávno na jednom projektu přišel k závěru, že to jde udělat líp, aniž by se knihovny praly. Trik je v tom, že musíte zajistit, aby se Mootools načetlo před jQuery. Potom už můžete kdekoli z kódu zavolat magickou metodu noConflict(). Pokud by se prvně načetlo jQuery, Mootools by nebylo funkční a vy byste si omlátili hlavu o stůl stejně jako já, než byste přišli na to, čím je způsobena nefunkčnost Vašeho skriptu.

Ve finální podobě tedy:
//head
<script type="text/javascript" src="moo1.2.js"></script>
<script type="text/javascript" src="jquery-1.3.js"></script>

//content'n'stuff

<script type="text/javascript">
    //kdekoli v kódu
    jQuery.noConflict();
</script>


Doufám, že tento tip Vám ušetří čas, peníze a modřiny.

Žádné komentáře: