kotori web solutions Maren Arnhold


jQuery: Gleichzeitiger Einsatz mit anderen Frameworks

jQuery ist zwar inzwischen (November 2012) das mit Abstand beliebteste JavaScript-Framework im Web, aber natürlich nicht das einzige. Magento setzt z. B. nach wie vor konsequent auf Prototype und scriptaculo.us, Joomla wiederum verwendet MooTools. Da die GUI- und Datenübertragungsfunktionen einer Shop- oder auch CMS-Lösung sehr grundlegend mit der vom Hersteller vorgegebenen Auswahl der JavaScript-Bibliotheken verknüpft sind, bleibt man auch an diese Auswahl gebunden, wenn man auf derselben Website Applikationen verwenden will, die ein anderes Framework benötigen. Beim parallelen Laden zweier oder mehrerer Frameworks allerdings kommt es dann zu Kollisionen - die $-Funktionen von jQuery und Prototype etwa vertragen sich schon auf ganz simpler syntaktischer Ebene nicht und bezeichnen auch jeweils etwas anderes.

Schon aufgrund des schieren Zeitaufwandes steht ein vollständiger Wechsel des Frameworks fast immer außer Frage. Das ist aber zumindest im Fall, jQuery zusätzlich einsetzen zu wollen, auch gar nicht nötig. jQuery stellt mit seiner noConflict-Methode eine Möglichkeit zur Verfügung, den $-Shortcut für seine eigenen Begriffe abzuschalten; in der Folge können wir dann der jQuery(document).ready()-Methode, die den Eventhandler für das vollständige Laden des DOM implementiert (siehe auch den entsprechenden Wissensartikel), als Parameter eine anonyme Funktion mit $-Argument mitgeben. Dieses Argument enthält dann das jQuery-Objekt, so dass wir innerhalb der anonymen Funktion einfach den jQuery-$-Shortcut verwenden können, ohne in Konflikte zu geraten. Wie das z. B. im Zusammenspiel mit Prototype aussieht, zeigt das folgende Listing. Hier wird dasselbe <div>-Element mit dem id-Tag "testdiv" einmal in div1 durch jQuerys $ und einmal in div2 durch Prototypes $ referenziert.

01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
<!DOCTYPE html>
    <head>
		<script src="jquery.min.js"></script>
		<script src="prototype.js"></script>
		<script>
 
			var div1, div2;
 
			 jQuery.noConflict();
			 jQuery(document).ready(function($){
 
				// (Hier jQuery-Code)
 
				div1 = $('#testdiv');
 
			 });
 
			// (Hier Prototype-Code)
 
			window.onload = function(){			 
 
				div2 = $('testdiv');
 
			};
 
		</script>
 
    </head>
    <body>
 
		<div id="testdiv" />
 
    </body>
</html>
 
Autorin: Maren Arnhold

comments powered by Disqus
ANZEIGE
kotori web solutions Maren Arnhold bietet einen Komplettservice rund um Webdesign, Webprogrammierung und Webhosting. Suchen Sie nach einer Lösung für Ihre private Homepage? Möchten Sie ein eigenes Blog betreiben und suchen dafür ein geeignetes CMS und entsprechenden Webspace? Oder interessieren Sie sich für E-Commerce und benötigen einen Webshop? Dann sollten wir uns kennenlernen - eine kostenlose Erstberatung ist selbstverständlich!
© 2013 kotori web solutions Maren Arnhold. Alle Rechte vorbehalten/All rights reserved..