jQuery-kärna - noConflict() metod
Exempel
Använd noConflict() metoden för att ange ett nytt namn för jQuery-variabeln:
var jq=$.noConflict();
Definition och användning
noConflict() metoden överlämnar kontrollen över variabeln $ till jQuery.
Denna metod frigör jQuery:s kontroll över $-variabeln.
Denna metod kan också användas för att ange ett nytt anpassat namn för jQuery-variabeln.
Tips:Detta är användbart när andra JavaScript-bibliotek använder $ för sina funktioner.
Syntaks
jQuery.noConflict(removeAll)
Parameter | Beskrivning |
---|---|
removeAll | Boolsk värde. Indikerar om det är tillåtet att helt återställa jQuery-variabeln. |
Förklaring
Många JavaScript-bibliotek använder $ som namn på funktioner eller variabler, jQuery är inget undantag. I jQuery är $ bara ett alias för jQuery, så även utan att använda $ kan alla funktioner säkerställas. Om vi behöver använda en annan JavaScript-bibliotek än jQuery, kan vi återge kontrollen till detta bibliotek genom att anropa $.noConflict():
<script type="text/javascript" src="other_lib.js"></script> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> $.noConflict(); // Användning av $ från ett annat bibliotek </script>
Det kan kombineras med .ready() metoden för att ge jQuery-objekt ett alias, detta är en mycket effektiv teknik:
<script type="text/javascript" src="other_lib.js"></script> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> $.noConflict(); jQuery(document).ready(function($) { // Användning av jQuery $ }); // Användning av $ från en annan bibliotek </script>
Dessutom, genom att skicka parametern true till denna metod, kan vi överlämna kontrollen över $ och jQuery till den ursprungliga biblioteket. Tänk på det noggrant innan du använder det!
Detta är en mer extrem version av det enkla noConflict-metoden, eftersom det helt återdefinierar jQuery. Det används vanligtvis i extrema situationer, till exempel när du vill integrera jQuery i en högst konflikterande miljö. Observera: Användning av detta metod kan mycket sannolikt leda till att plugins blir ogiltiga.
Exempel
Exempel 1
Mappa tillbaka $-refererade objekt till det ursprungliga objektet:
jQuery.noConflict(); jQuery("div p").hide(); // Använda jQuery $("content").style.display = "none"; // Använda annan biblioteks $()
Exempel 2
Återställ användning av alias $, sedan skapa och kör en funktion där $ fortfarande används som alias för jQuery i denna funktionens område. Den ursprungliga $-objektet är ogiltigt i denna funktion. Denna funktion är mycket effektiv för de flesta plugins som inte är beroende av andra bibliotek:
jQuery.noConflict(); (function($) { $(function() { // Använda $ som alias för jQuery }); })(jQuery); ... // Annan kod som använder $ som alias
Exempel 3
Det är möjligt att kombinera jQuery.noConflict() med kortformad ready för att göra koden mer kompakt:
jQuery.noConflict()(function() { // Använda jQuery-kod }); ... // Annan bibliotek som använder $ som alias
Exempel 4
Skapa en ny alias för att använda jQuery-objekt i kommande bibliotek:
var j = jQuery.noConflict(); j("div p").hide(); // jQuery-kod $("content").style.display = "none"; // $() kod baserad på annan bibliotek
Exempel 5
Komplett flytta jQuery till en ny namnrymd:
var dom = {}; dom.query = jQuery.noConflict(true);
Resultat:
dom.query("div p").hide(); // Ny jQuery-kod $("content").style.display = "none"; // En annan biblioteks $() kod jQuery("div > p").hide(); // En annan version av jQuery-kod