2017-10-02 4 views
0

Ich weiß, dass wir $ .noConflict() verwenden, um andere Plugin-Konflikte zu überwinden. Wenn beispielsweise ein neues Plugin das $ -Symbol als Variable verwendet, wird es überschrieben. so, verwenden wir wie unten

var $j=$.noConflict(); 

Aber ich habe Zweifel, hier können wir archivieren diese unter Code selbst dann, warum $ .noConflict(); erforderlich?

var $j=$; 

Danke Fortschritt. erklärt freundlicherweise unterschiedliche Haupt

+1

https://api.jquery.com/jquery.noconflict/ – Andreas

+0

Danke, aber ich bezweifle, bin immer noch als pro meine Frage –

+0

Ich denke, wenn Sie verwenden können, '$ .noConflict()' anstelle von 'jQuery.noConflict()' macht keinen Unterschied, da '$' zum Zeitpunkt der Verwendung keinen Konflikt hat, gibt es nichts, was die 'noConflict'-Funktion von jQuery '$ wiederherstellen kann 'zu. – xander

Antwort

3

Hier haben Sie detaillierte Informationen darüber, warum:

Viele JavaScript-Bibliotheken $ als Funktion oder Variablennamen verwenden, nur wie jQuery tut. In jQuerys Fall ist $ nur ein Alias ​​für jQuery, so dass alle Funktionen verfügbar sind, ohne $ zu verwenden. Wenn Sie eine weitere JavaScript-Bibliothek neben jQuery verwenden müssen, geben Sie die Steuerung von $ back an die andere Bibliothek mit einem Aufruf von $ .noConflict() zurück. Alte Referenzen von $ werden während der jQuery-Initialisierung gespeichert; noConflict() stellt einfach sie wieder her.

Es ist von jQuery und es gibt noch mehr Informationen: https://api.jquery.com/jquery.noconflict/

Update nach Kommentar

Von jQuery-Code https://code.jquery.com/jquery-1.10.2.js, wenn Sie für noConflict suchen Sie

noConflict: function(deep) { 
     if (window.$ === jQuery) { 
      window.$ = _$; 
     } 

     if (deep && window.jQuery === jQuery) { 
      window.jQuery = _jQuery; 
     } 

     return jQuery; 
    }, 

finden In einfach: Dies prüft, ob global $ oder global jQuery wurde bereits verwendet. In beiden Fällen wird jQuery zurückgegeben. So können Sie nicht einfach tun var $j=$; Ursache $ möglicherweise bereits Konflikte hat. Die noConflict() ist, was Sie brauchen.

+0

Nein noch, ich bin nicht klar. Gemäß der Referenz verstehe ich die Verwendung von diesem. Meine einzige Frage hier ist, dass wir das ohne $ .noconfict() archivieren können. Also, bitte geben Sie eine klare Erklärung, wenn Sie es haben –

+0

Nein, es ist nicht das Gleiche ohne. Probleme können auftreten, sobald sie Konflikte haben. Bedeutet, sobald mehrere Dinge versuchen, den '$' aus dem globalen Geltungsbereich zu verwenden, dann würde 'var $ j = $;' nicht funktionieren, weil '$' bereits Konflikte aufweist. – caramba

+0

@NatarajanVeerasekaran hat die Antwort aktualisiert. Lass mich wissen, wenn das für dich jetzt Sinn macht? – caramba

0

Wenn Sie eine andere JavaScript-Bibliothek neben jQuery verwenden müssen, kehrt die Kontrolle über $ zurück auf die anderen Bibliothek mit einem Aufruf von $ .noConflict(). Diese Technik ist besonders effektiv in Verbindung mit der .ready() Fähigkeit Methode der jQuery Objekt an Alias, wie innerhalb Rückruf .ready() übergeben Sie $ verwenden können, wenn Sie ohne Angst vor Konflikten wollen später

Beispiele für noConflict auf unterschiedliche Weise

Typ 01 var j = jQuery verwenden.kein Konflikt();

// Do something with jQuery 
j("div p").hide(); 

// Do something with another library's $() 
$("content").style.display = "none"; 

Typ 02

jQuery.noConflict(); 
(function($) { 
    $(function() { 
    // More code using $ as alias to jQuery 
    }); 
})(jQuery); 
+0

Dank Suventhan Nantha. Ich habe eine bessere Idee. –

+0

@NatarajanVeerasekaran können Sie meine Antwort upvote, wenn Sie mit meiner Antwort zufrieden sind? –

+0

@Suventhan Nantha Ich dachte, du hast nur diese klare Erklärung getan. Ich habe den Inhalt während der Abstimmung nicht bemerkt. Wie auch immer, beide haben die richtige Antwort. Aber, verglichen die Erklärung "Caramba" gab detaillierte –

Verwandte Themen