2009-09-09 8 views
15

Wenn eine Seite sowohl JQuery als auch Prototype hat, dann habe ich einen Konflikt. Es gibt eine Möglichkeit, $ sign für JQuery zu deaktivieren, so dass es keinen Konflikt gibt, aber ich muss das Schlüsselwort JQuery anstelle von $ verwenden.Wie vermeidet man einen Konflikt zwischen JQuery und Prototyp

Ich frage mich, ob es eine Option für Prototype gibt, diesen Konflikt zu lösen. Gibt es eine Möglichkeit, beide Bibliotheken zu verwenden, ohne ihren Nutzen oder ihr kurzes Keyword zu beeinträchtigen?

Soweit ich weiß, ist es keine gute Idee, mehrere JS-Bibliothek für die gleiche Seite zu verwenden; aber manchmal kann es hilfreich sein.

+0

stellen Sie sicher, jQuery zu laden, bevor Prototyp –

+0

Ich denke, dass dies eine der am häufigsten gestellten Fragen jQuery sein muss :) –

Antwort

34

Verwenden Sie die noConflict-Methode für jQuery und weisen Sie sie einer neuen (kurzen) Variablen zu. Verwenden Sie die neue Variable an der Stelle, an der Sie $ für jQuery verwendet hätten.

var $j = jQuery.noConflict(); 

$j(function() { 
    $j('#selector').each(....); 
}); 

oder, wenn Sie Sie können wickeln alle Ihre jQuery-Code in einer anonymen Funktion nicht brauchen, um Prototype/jQuery zu mischen.

(function($) { 
    // $ sign here is a parameter, which is set to jQuery 

    $(function() { 
     $('#selector').each(....); 
    }); 
})(jQuery); 
+0

Gibt es eine bestimmte Reihenfolge, dass hat jQuery (erste aufgenommen werden, letzte, etc) für eines Ihrer Codebeispiele? –

+0

Wenn Sie noConflict verwenden, muss jQuery enthalten sein, bevor Sie es aufrufen (offensichtlich), wie auch die andere Bibliothek, die $ definiert. Siehe diese Seite für weitere Informationen: http://docs.jquery.com/Using_jQuery_with_Other_Libraries – tvanfosson

+0

@tvanfosson Ich wusste nicht, dass eine Variable zugewiesen werden kann, netter Trick :) Uhh ... Ich weiß über die zweite Technik, aber mag es nicht :(es macht mich leicht zu verwirren. Vielen Dank für Ihre Zeit :) – Sadi