jQuery und Prototype gemeinsam einsetzen

Abgelegt von Sascha Schoppengerd am 19.08.2008 um 11:04 Uhr

In seltenen Fällen kann es vorkommen, dass man jQuery und Prototype gemeinsam in einem Projekt einsetzen möchte. Dieses macht in meinen Augen zwar nicht sehr viel Sinn, denn alles was Prototype kann, läßt sich mit jQuery ebenfalls realisieren. Manchmal hat man aber vielleicht einfach keine Lust oder Zeit, die bereits vorhandenen Funktionen und Klassen für die jeweils andere JavaScript Framework anzupassen.

Wer jetzt aber glaubt, dass man lediglich beide Frameworks einbinden braucht und dann gleich starten kann, der liegt ziemlich falsch, denn dummerweise sprechen sowohl jQuery, als auch Prototype die internen Funktionen und Selektoren mit Hilfe des Shortcuts “$” an und genau da liegt dann auch das grundlegende Problem der parallelen Einsatzweise.

Um diese unerwünschten Namenskollisionen zu vermeiden, wäre es also notwendig, dass einer der beiden Libraries den internen Shortcut z.B. auf “jQuery” oder “Pro” etc. ändert und da die Entwickler des jQuery-Frameworks hier bereits mitgedacht haben, wird diese Änderung automatisch durch die interne Methode .noConflict() realisiert.

Damit das Ganze aber auch fehlerfrei funktioniert, müsst Ihr zwingend darauf achten, die Prototype – Bibliothek vor der jQuery Bibliothek zu laden, denn ansonsten erzielt Ihr durch den Einsatz von jQuery.noConflict() keinerlei Wirkung.

Der folgende Beispielcode verdeutlicht nochmals die korrekte Anwendung der Methode:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<head>
    <script type="text/javascript" src="prototype.js"></script>
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript">
    //<![CDATA[
	jQuery.noConflict();
 
	// Benutze jQuery über jQuery(...)
	jQuery(document).ready(function(){
		jQuery("div").hide();
	});
 
	// Benutze Prototype über $(...), etc.
	$('someid').hide();
    //]]>
    </script>
</head>

Weitere Informationen zum Thema findet Ihr auch in der jQuery Dokumentation.