MC, 14:14 sobota, 17.12.2011 r.
Ilustracja do artykułu: Prototype, Mootools i jQuery - Rozwiązanie konfliktu

Prototype, Mootools i jQuery - Rozwiązanie konfliktu

Prototype (wykorzystywana przez Mootools) oraz jQuery są konkurencyjnymi bibliotekami programistycznymi napisanymi w JavaScript. Niestety konkurencja w tym przypadku oznacza również konflikty, o czym już wspominałem w jednym z wpisów na stronie (Konflikt pomiędzy Lightbox (Prototype) a jQuery? Użyj Thickbox!). Dokładniej, problem polega na tym, że obydwie te biblioteki używają funkcji $() i finalnie nie wiadomo co w którym skrypcie chcemy wykorzystać. W trywialnych przypadkach jednak da się temu zaradzić.

Kiedy możemy rozwiązać koflikt?

Tak jak wspomniałem we wstępie, konflikt pomiędzy jQuery a Prototype możemy rozwiązać tylko w pewnych uproszczonych przypadkach. Obrazowo można to przedstawić przykładem w którym to wiodącą biblioteką w naszym projekcie jest Prototype i chcemy użyć tylko pewnych wstawek z jQuery i to najlepiej napisanych przez nas samych (staram się tutaj dać do zrozumienia, że większe biblioteki wykorzystujące jQuery, np. z jakimiś elementami UI, mogą stworzyć znacznie większy problem, trudny do obejścia).

Jak zatem zażegnać konflikt?

Jak już wiemy, problem polega na używaniu funkcji $() przez obydwie biblioteki. Na szczęście jQuery pozwala tę funkcję zamienić na dowolną inną, przechodząc w tryb bezkonfliktowy, co pokazuję na poniższym przykładzie.
var jQ = jQuery.noConflict();
Tym sposobem otrzymamy funkcję jQ() gotową to używania zamiast $() (czyli $() może sobie spokojnie używać Prototype). To na koniec prosty przykład użycia nowej funkcji.
var jQ = jQuery.noConflict();

jQ(function()
{
jQ("#jakieElement").hide();
});

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!

Imię:
Treść: