Kernel jQuery - metoda noConflict()
Przykład
Użyj metody noConflict() do przypisania nowej nazwy zmiennej jQuery:
var jq=$.noConflict();
Definicja i użycie
Metoda noConflict() przenosi kontrolę nad zmienną $ w jQuery.
Metoda ta uwalnia kontrolę nad zmiennej $ w jQuery.
Metoda ta może również być używana do przypisania nowej nazwy zmiennej jQuery.
Wskazówka:To metoda jest bardzo przydatna, gdy inne biblioteki JavaScript używają $ jako nazwy funkcji.
Gramatyka
jQuery.noConflict(removeAll)
Parametry | Opis |
---|---|
removeAll | Wartość logiczna. Indykuje, czy dozwolone jest całkowite przywrócenie zmiennej jQuery. |
Opis
Wiele bibliotek JavaScript używa $ jako nazwy funkcji lub zmiennej, jQuery również. W jQuery, $ jest jedynie aliasem jQuery, więc nawet bez użycia $ można zapewnić wszystkie funkcjonalności. Jeśli potrzebujemy użyć innej biblioteki JavaScript poza jQuery, możemy zwrócić kontrolę do tej biblioteki, wywołując $.noConflict():
<script type="text/javascript" src="other_lib.js"></script> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> $.noConflict(); // Kody używające $ z innej biblioteki </script>
Można go połączyć z metodą .ready() aby nadać alias jQuery obiektom, ta technika jest bardzo efektywna:
<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($) { // Kody używające $ jQuery }); // Kody używające $ z innej biblioteki </script>
W ten sposób, przekazując argument true do tej metody, możemy zwrócić kontrolę nad $ i jQuery do oryginalnej biblioteki. Przed użyciem, pomyśl dobrze!
To jest bardziej ekstremalna wersja niż zwykły noConflict, ponieważ w pełni redefiniuje jQuery. Zwykle jest używane w ekstremalnych przypadkach, takich jak włożenie jQuery do środowiska z wysoką konfliktowością. Uwaga: Po wywołaniu tej metody istnieje wysokie ryzyko, że wtyczki mogą przestanie działać.
Przykład
Przykład 1
Mapuj obiekty odniesienia $ z powrotem do oryginalnych obiektów:
jQuery.noConflict(); jQuery("div p").hide(); // Użycie jQuery $("content").style.display = "none"; // Użycie $ z innej biblioteki
Przykład 2
Odzyskaj użycie aliasu $, utwórz i uruchom funkcję, w której nadal używasz $ jako aliasu jQuery. W tej funkcji, oryginalny obiekt $ jest nieważny. Ta funkcja jest bardzo skuteczna dla większości wtyczek, które nie zależą od innych bibliotek:
jQuery.noConflict(); (function($) { $(function() { // Użycie $ jako aliasu jQuery }); })(jQuery); ... // Inne biblioteki używające $ jako aliasu
Przykład 3
Możesz połączyć jQuery.noConflict() z uproszczonym ready, aby kod był bardziej zwięzły:
jQuery.noConflict()(function() { // Użycie kodu jQuery }); ... // Inne biblioteki używające $ jako aliasu
Przykład 4
Stwórz nową alias, aby używać jQuery w kolejnej bibliotece:
var j = jQuery.noConflict(); j("div p").hide(); // Kod oparty na jQuery $("content").style.display = "none"; // Kod oparty na innej bibliotece z użyciem $()
Przykład 5
Całkowicie przenieś jQuery do nowej przestrzeni nazw:
var dom = {}; dom.query = jQuery.noConflict(true);
Wynik:
dom.query("div p").hide(); // Nowa wersja jQuery $("content").style.display = "none"; // Inny kod z użyciem $() jQuery("div > p").hide(); // Inna wersja kodu jQuery