2009-03-27 6 views
1

Ich habe ein Akkordeon-Menü und ein Lightwindow-Skript auf meiner Webseite. Das Lightwindow-Skript funktioniert wegen des Akkordeon-Skripts nicht, weil das Lightwindow-Skript funktioniert, wenn ich letzteres lösche. Es muss einen Konflikt geben, aber was? HierJavascript-Konflikt auf meiner HTML-Seite

ist der Kopfabschnitt von meiner Seite:

<!-- lightwindow files --> 
<script type="text/javascript" src="lightwindow/javascript/prototype.js"></script> 
<script type="text/javascript" src="lightwindow/javascript/scriptaculous.js?load=effects"></script> 
<script type="text/javascript" src="lightwindow/javascript/lightwindow.js"></script> 
<link rel="stylesheet" href="lightwindow/css/lightwindow.css" type="text/css" media="screen" /> 


<!-- accordion scripts --> 
<script src="js/jquery-1.2.1.min.js" type="text/javascript"></script> 
<script src="js/menu.js" type="text/javascript"></script> 
<script src="js/jquery.cookie.js" type="text/javascript"></script> 
<link rel="stylesheet" type="text/css" href="css/accordion.css" /> 

Vielen Dank für Ihre Zeit.

Prost

Tochiro

Antwort

0

Sie können eine Methode/Funktion in beiden Bibliotheken mit dem gleichen Namen definiert haben.

Wenn kein doppelter Methoden-/Funktionsname vorhanden ist, suchen Sie nach doppelten globalen Variablennamen.

Ich habe mehrere Male auf Konflikte gestoßen, als ich versuchte, dem Dokument Methoden hinzuzufügen, die sich gegenseitig überschrieben haben.

0

Sie haben fast sicher einen Konflikt zwischen JQuery und Prototype. Sie definieren beide zum Beispiel $.

JQuery verfügt über einen Kompatibilitätsmodus, den Sie aktivieren können, um Konflikte zu vermeiden.

3

Sie müssten die unter http://docs.jquery.com/Core/jQuery.noConflict beschriebene Methode jQuery.noConflict verwenden.

Nicht sicher, ob Version 1.2.1 es haben wird.

Lesen Sie einfach die Anweisungen auf dieser Seite, wie Sie es verkabeln. Als erstes müssen Sie jQuery vor die anderen Bibliotheken stellen.

Aktualisierung: Der folgende Code wurde hinzugefügt, damit Sie das Update anwenden können. Wenn die Zeile jQuery.noConflict() einen Fehler verursacht, müssen Sie möglicherweise eine neuere Version von jQuery versuchen.

<script src="js/jquery-1.2.1.min.js" type="text/javascript"></script> 
<script type="text/javascript"> jQuery.noConflict() </script> 

<!-- lightwindow files --> 
<script type="text/javascript" src="lightwindow/javascript/prototype.js"></script> 
<script type="text/javascript" src="lightwindow/javascript/scriptaculous.js?load=effects"></script> 
<script type="text/javascript" src="lightwindow/javascript/lightwindow.js"></script> 
<link rel="stylesheet" href="lightwindow/css/lightwindow.css" type="text/css" media="screen" /> 


<!-- accordion scripts --> 
<script src="js/menu.js" type="text/javascript"></script> 
<script src="js/jquery.cookie.js" type="text/javascript"></script> 
<link rel="stylesheet" type="text/css" href="css/accordion.css" /> 

Beachten Sie auch, Sie von $ einige Ihrer Code tauschen (...) zu jQuery können müssen (...)

Aus der jQuery doc Seite:

, wo Sie Wenn Sie $ ("div p") verwenden, müssen Sie nun jQuery ("div p") ausführen.

+0

Ich bin eher ein Anfänger in Javascript und obwohl ich die Seite gelesen habe, die Sie erwähnen, konnte ich nicht genug davon verstehen, um mein Problem zu lösen. Ich versuche, die Jquery zuerst, aber das hat das Problem nicht geändert. –

+0

Die Seite lässt es so einfach aussehen, wie den jQuery-Kram zuerst zu schreiben, dann fügen wir direkt darunter einen Inline-Code für jQuery.noConflict(); dann werden die zusätzlichen Bibliotheken es nicht vermasseln. –

+0

Ich habe das versucht. Das Lichtfenster funktioniert, aber es gibt ein Problem mit dem Akkordeon-Skript: alle seine Elemente sind geöffnet, während nur eins geöffnet und der Rest geschlossen werden sollte. –

1
<script type="text/javascript"> jQuery.noConflict() </script> 

Ich wollte nur sagen, dass dieser Trick litle Wunder für mich gearbeitet Dank. Wenn Sie Chronoformen verwenden, ist dies wahrscheinlich die Antwort auf Ihre Javascript-Probleme.

Nicht mehr "DONE ABER MIT FEHLERN AUF SEITE" Endlich.

Thanks again

1

Wenn Sie den jQuery.noConflict hinzufügen(); - Sie müssen auch in das jQuery-Skript gehen und alle $ Variablen in jQuery umwandeln.