Mam prosty skrypt jQuery we wtyczce WordPress, który używa otoki jQuery:
$(document).ready(function(){
// jQuery code is in here
});
Wywołuję ten skrypt z poziomu pulpitu WordPress i ładuję go PO załadowaniu środowiska jQuery.
Kiedy sprawdzam stronę w Firebug, ciągle otrzymuję komunikat o błędzie:
TypeError: $ nie jest funkcją
$ (dokument) .ready (function () {
Czy powinienem zawinąć skrypt w tę funkcję:
(function($){
// jQuery code is in here
})(jQuery);
Ten błąd miałem już kilka razy i nie jestem pewien, jak sobie z tym poradzić.
Każda pomoc byłaby bardzo mile widziana.
$
w konsoli i naciśniesz enter - co widzisz?Odpowiedzi:
Domyślnie podczas kolejkowania jQuery w Wordpress należy używać
jQuery
i$
nie jest on używany (służy to kompatybilności z innymi bibliotekami).Twoje rozwiązanie w pakowanie
function
będzie działało dobrze, lub możesz załadować jQuery w inny sposób (ale prawdopodobnie nie jest to dobry pomysł w Wordpress).Jeśli musisz użyć
document.ready
, możesz przejść$
do wywołania funkcji:źródło
jQuery(function ($) { ...
, musisz użyćjQuery
zamiast$
To powinno to naprawić:
Krótko mówiąc, WordPress uruchamia własne skrypty, zanim będzie to możliwe, i wypuszczają
$
var, aby nie kolidował z innymi bibliotekami. Ma to całkowity sens, ponieważ WordPress jest używany do wszelkiego rodzaju stron internetowych, aplikacji i oczywiście blogów.Z ich dokumentacji:
źródło
To rozwiązanie działało dla mnie
Przenieś swój kod do zamknięcia i użyj
$
zamiastjQuery
Znalazłem powyższe rozwiązanie w /magento/33348/uncaught-typeerror-undefined-is-not-a-function-when-using-a-jquery-plugin-in-ma
... po przeszukaniu zbyt wiele
źródło
Możesz uniknąć takich konfliktów
źródło
Podziękowania dla Ashwani Panwar i Cyssoo: https://stackoverflow.com/a/29341144/3010027
źródło
Spróbuj tego:
źródło
Musisz przekazać $ w funkcji ()
źródło
zamień
$
znak najQuery
następujący:źródło
Dokładnie sprawdź referencje jQuery. Możliwe, że odwołujesz się do niego więcej niż raz lub wywołujesz funkcję zbyt wcześnie (przed zdefiniowaniem jQuery). Możesz spróbować, jak wspomniano w moich komentarzach i umieścić dowolne odwołanie do jQuery na górze pliku (w głowie) i sprawdzić, czy to pomoże.
Jeśli użyjesz enkapsulacji jQuery, to nie powinno pomóc w tym przypadku. Spróbuj, ponieważ uważam, że jest ładniejszy i bardziej oczywisty, ale jeśli jQuery nie zostanie zdefiniowany, otrzymasz te same błędy.
W końcu ... jQuery nie jest obecnie zdefiniowane.
źródło
script
odniesieniaJQuery
na górę,index.html
a prawdopodobnie zadziałaZnajduję również dobre rozwiązanie do używania trybu jQuery noConflict.
Znalazłem to rozwiązanie stąd. https://thecodingstuff.com/how-to-properly-use-jquery-noconflict-mode-in-wordpress/
źródło
Posługiwać się
zamiast
lub
W ramach funkcji $ wskazuje na jQuery, jak można się spodziewać
źródło
Co dla mnie zadziałało Pierwszą biblioteką do zaimportowania jest biblioteka zapytań, a następnie wywołuje metodę jQuery.noConflict ().
źródło
źródło
teraz użyj jq zamiast jQuery
źródło
Ten problem występuje, gdy nazwa funkcji i nazwa identyfikatora w pliku są takie same. upewnij się tylko, że wszystkie twoje identyfikatory w pliku są unikalne.
źródło
Możesz użyć
lub
źródło