- Używam witryny WordPress.
- Dołączam ten skrypt do nagłówka.
Po załadowaniu skryptu pojawia się ten błąd:
TypeError: „undefined” nie jest funkcją (ocena „$ (document)”)
Nie mam pojęcia, co to powoduje ani co to oznacza.
W Firebug otrzymuję to:
$ nie jest funkcją
Net
karcie Firebug (upewnij się, że jQuery faktycznie zostało załadowane).Odpowiedzi:
Wordpress domyślnie używa jQuery w trybie noConflict . Musisz odwołać się do niego używając
jQuery
nazwy zmiennej, a nie$
np. Usezamiast
Możesz łatwo zawinąć to w samowykonującą się funkcję,
$
aby ponownie odwołać się do jQuery (i uniknąć zanieczyszczania globalnej przestrzeni nazw), np.źródło
jQuery(document)
a nie$(document)
gdziekolwiek chcesz. Jeśli$
zamiast tego chcesz użyć , powyższy skrypt po prostu tworzy funkcję, która pobiera argument,$
a następnie wykonuje go przekazującjQuery
; w skrócie, w ramach funkcji$
wskazuje na jQuery, jak można się spodziewać.$(document).ready(function() { // code });
w miejscu twojego$(document);
... które działało jak urok.Użyj jQuery's
noConflict
. Zrobiło to dla mnie cudaTo znaczy, zakładając, że umieściłeś jQuery w swoim kodzie HTML
źródło
Użyj tego:
źródło
Wypróbuj ten fragment:
U mnie zadziałało, może ci też pomoże.
źródło
Miałem ten problem tylko na Chrome.
Próbowałem dodać
tuż przed telefonem
Zadziałało.
Wielkie dzięki
źródło
Sprawdź również, czy uwzględniono jQuery, a następnie niektóre komponenty / inne biblioteki (takie jak jQuery UI), a następnie przypadkowo ponownie dołączono jQuery - spowoduje to ponowne zdefiniowanie jQuery i usunięcie pomocników składników (takich jak .datepicker) z instancji.
źródło
Umieść swój kod js w zamknięciu powyżej, to powinno rozwiązać problem.
źródło
Użyłbym tego
źródło
Z takimi problemami spotkałem się również wielokrotnie w rozwijającym się nośniku. Właściwie to nie jest to konflikt JS. Kiedy ładujemy witrynę html do przeglądarki, nie napotykamy takiego błędu, ale kiedy ładujemy tego typu strony przez localhost, napotykamy taki problem. To z powodu lokalnego hosta. Kiedy ładujemy skrypty za pośrednictwem hosta lokalnego, skanuje on skrypt i renderuje dane wyjściowe. Ale kiedy nie używaliśmy localhost. Po prostu skanuje dane wyjściowe. Na przykład, kiedy piszemy kod php, umieszczamy go na lokalnym serwerze i uruchamiamy bez hosta, otrzymujemy błąd. Ale jeśli kod jest poprawny i jest uruchamiany przez hosta, otrzymujemy rzeczywisty wynik, a kiedy używamy elementu inspect, otrzymujemy kod wyjściowy w formacie HTMl, ale nie w formacie PHP, dzieje się tak z powodu renderowania kodu.
To jest błąd renderowania. Aby naprawić ten błąd kodu jQuery, jedno z rozwiązań może używać tej metody.
Ten kod rejestruje „$” jako zmienną funkcji przez zastosowanie jquery. W przeciwnym razie plik .js jest odczytywany domyślnie tylko jako javascript.
źródło
Napotkałem ten problem również wtedy, gdy włączałem jQuery do nagłówka mojej strony, nie zdając sobie sprawy, że host już automatycznie włączał go do strony. Więc załaduj swoją stronę na żywo i sprawdź źródło, aby zobaczyć, czy jQuery jest linkowany.
źródło
Dwie rzeczy:
źródło
zawiń cały skrypt między to ...
Wiele bibliotek JavaScript używa znaku $ jako nazwy funkcji lub zmiennej, tak jak robi to jQuery. W przypadku jQuery $ jest tylko aliasem dla jQuery, więc wszystkie funkcje są dostępne bez użycia $. Jeśli chcesz użyć innej biblioteki JavaScript obok jQuery, zwróć kontrolę $ z powrotem do innej biblioteki, wywołując $ .noConflict () . Stare odwołania do $ są zapisywane podczas inicjalizacji jQuery; noConflict () po prostu je przywraca.
źródło
W poniższym fragmencie możesz użyć zarówno jQuery, jak i $. to działało dla mnie
źródło
Możesz przekazać $ w funkcji ()
lub możesz zastąpić
$(document);
tymjQuery(document);
lub możesz użyć
jQuery.noConflict()
źródło