Mam proste zdarzenie kliknięcia jquery
<script type="text/javascript">
$(function() {
$('#post').click(function() {
alert("test");
});
});
</script>
oraz odwołanie do jquery zdefiniowane w site.master
<script src="<%=ResolveUrl("~/Scripts/jquery-1.3.2.js")%>" type="text/javascript"></script>
Sprawdziłem, czy skrypt jest poprawnie rozwiązany, widzę znaczniki i przeglądam skrypt bezpośrednio w firebug, więc muszę zostać znaleziony. Nadal jednak otrzymuję:
$ nie jest zdefiniowane
i żadna z jquery nie działa. Próbowałem również różnych odmian tego, takich jak $ (dokument) .ready i jQuery itp.
Jest to aplikacja MVC 2 w .net 3.5, jestem pewien, że jestem naprawdę gęsta, wszędzie w Google mówi, aby sprawdzić, czy plik jest poprawnie przywołany, co sprawdziłem i sprawdziłem ponownie, proszę doradzić! : /
javascript
jquery
asp.net-mvc
Paul Creasey
źródło
źródło
Odpowiedzi:
Ten błąd może być spowodowany tylko jedną z trzech rzeczy:
Przede wszystkim upewnij się, jaki skrypt jest wywoływany poprawnie, powinien on wyglądać
i nie powinien mieć atrybutów asynchronizujących lub odraczających .
Następnie powinieneś sprawdzić panel sieci Firebug , aby sprawdzić, czy plik jest właściwie ładowany poprawnie. Jeśli nie, zostanie podświetlony na czerwono, a obok niego będzie napisane „404”. Jeśli plik ładuje się poprawnie, oznacza to, że problem ma numer 2.
Upewnij się, że cały kod javascript jQuery jest uruchamiany w bloku kodu, takim jak:
Zapewni to ładowanie kodu po zainicjowaniu jQuery.
Ostatnią rzeczą do sprawdzenia jest upewnienie się, że nie ładujesz żadnych wtyczek przed załadowaniem jQuery. Wtyczki rozszerzają obiekt „$”, więc jeśli załadujesz wtyczkę przed załadowaniem rdzenia jQuery, otrzymasz błąd, który opisałeś.
Uwaga: Jeśli ładujesz kod, który nie wymaga do uruchomienia jQuery, nie trzeba go umieszczać w module obsługi jQuery. Ten kod można rozdzielić za pomocą
document.readyState
.źródło
$(document)
nie będzie działał, chyba że masz znacznik skryptu zawierający jQuery przed tym stwierdzeniem ...Możliwe, że Twój skrypt został wywołany przed wywołaniem skryptu jquery.
To powoduje, że $ nie jest zdefiniowane
Umieść plik jquery.js przed tagiem skryptu, a on zadziała;) tak:
źródło
@section Scripts
taguNajpierw upewnij się, że skrypt jQuery jest załadowany. Może to być z CDN lub lokalnie na twojej stronie. Jeśli nie załadujesz tego przed próbą użycia jQuery, powie ci, że jQuery nie jest zdefiniowane.
Może to być w HEAD lub w stopce strony, po prostu upewnij się, że go załadowałeś, zanim spróbujesz wywołać inne jQuery.
Następnie musisz użyć jednego z dwóch poniższych rozwiązań
lub
pamiętaj, że wiele razy $ (dokument) .ready (function () {// kod tutaj}); nie będzie działać.
źródło
Jeśli wywołanie wtyczki jQuery znajduje się obok
</body>
, a skrypt został wcześniej załadowany, należy uruchomić kod powindow.onload
zdarzeniu, w następujący sposób:`
więc Twój kod będzie działał dopiero po załadowaniu okna, gdy wszystkie zasoby zostaną załadowane. W tym momencie
$
zostanie zdefiniowana jQuery ( ).Jeśli użyjesz tego:
`
$
nie została jeszcze zdefiniowana w tej chwili, ponieważ jest wywoływana przed jQuery jest załadowany, a skrypt nie zadziała na tej pierwszej linii na konsoli.źródło
Po prostu zrobiłem to samo i odkryłem, że mam dużo
Więc ładowali się, ale nie było już żadnej wskazówki, dlaczego to nie działa. Nie trzeba dodawać, że poprawna pisownia to naprawiła.
źródło
Użyj sekcji skryptów w widoku i układzie głównym.
Umieść wszystkie skrypty zdefiniowane w widoku w sekcji Skrypty widoku. W ten sposób możesz załadować układ główny po załadowaniu wszystkich innych skryptów. Jest to domyślna konfiguracja podczas uruchamiania nowego projektu internetowego MVC5. Nie jestem pewien co do wcześniejszych wersji.
Views / Foo / MyView.cshtml:
Widoki / Udostępnione / _Layout.cshtml
Zwróć uwagę, jak sekcja skryptów jest renderowana jako ostatnia w głównym pliku układu.
źródło
upewnij się, że naprawdę ładujesz jquery, to nie jest jquery - to interfejs użytkownika!
To jest poprawne źródło skryptu dla jquery:
źródło
Jak wspomniano powyżej, dzieje się tak z powodu konfliktu zmiennej $.
Rozwiązałem ten problem, rezerwując zmienną dodatkową dla jQuery bez konfliktu.
a następnie użyj go w dowolnym miejscu
więcej szczegółów można znaleźć tutaj
źródło
Oznacza to, że twoja biblioteka jQuery nie została jeszcze załadowana.
Możesz przenieść swój kod po wyciągnięciu biblioteki jQuery.
lub możesz użyć czegoś takiego
źródło
Czy korzystasz z innych bibliotek JavaScript? Jeśli tak, prawdopodobnie będziesz musiał użyć jQuery w trybie zgodności:
http://docs.jquery.com/Using_jQuery_with_Other_Libraries
źródło
po kilku testach znalazłem szybkie rozwiązanie, możesz dodać na górze strony indeksu:
działa bardzo dobrze :)
źródło
Otrzymałem ten sam komunikat o błędzie, gdy źle napisałem odwołanie do jQuery i zamiast
type="text/javascript"
wpisałem „... javascirpt”. ;)źródło
type="text/css"
. Dzięki za uratowanie mojego zdrowia psychicznego!type="javascript"
. Zmarnowałem 30 minut na znalezienie.Wygląda na to, że jQuery nie ładuje się poprawnie. Z jakiego źródła / wersji korzystasz?
Alternatywnie może to być kolizja przestrzeni nazw, więc spróbuj użyć jQuery jawnie zamiast używać
$
. Jeśli to zadziała, możesz chcieć użyć tego,noConflict
aby upewnić się, że inny używany kod się$
nie psuje.źródło
Ten błąd oznacza, że jQuery nie został jeszcze załadowany na stronie. Za pomocą
$(document).ready(...)
lub jakikolwiek jego wariant nie przyniesie nic dobrego, podobnie jak$
funkcja jQuery.Korzystanie
window.onload
powinno tu działać. Pamiętaj, że tylko jednej funkcji można przypisaćwindow.onload
. Aby uniknąć utraty oryginalnej logiki obciążenia, możesz ozdobić oryginalną funkcję w następujący sposób:Spowoduje to wykonanie funkcji, która została pierwotnie przypisana
window.onload
, a następnie zostanie wykonana// YOUR JQUERY
.Zobacz https://en.wikipedia.org/wiki/Decorator_pattern, aby uzyskać więcej informacji na temat wzoru dekoratora.
źródło
Korzystam z Url.Content i nigdy nie mam problemu.
źródło
W rozwiązaniu wspomniano - „Ostatnią rzeczą do sprawdzenia jest upewnienie się, że nie ładujesz żadnych wtyczek przed załadowaniem jQuery. Wtyczki rozszerzają obiekt„ $ ”, więc jeśli ładujesz wtyczkę przed załadowaniem rdzenia jQuery, to Dostaniesz opisany błąd. ”
Aby tego uniknąć -
Wiele bibliotek JavaScript używa $ jako funkcji lub nazwy zmiennej, podobnie jak jQuery. W przypadku jQuery $ jest tylko aliasem dla jQuery, więc cała funkcjonalność jest dostępna bez użycia $. Jeśli musimy użyć innej biblioteki JavaScript obok jQuery, możemy zwrócić kontrolę $ z powrotem do innej biblioteki za pomocą wywołania $ .noConflict ():
źródło
Miałem ten problem raz bez wyraźnego powodu. Działo się to lokalnie, gdy pracowałem przez serwer programistyczny aspnet. Działało, a ja przywróciłem wszystko do stanu, w którym wcześniej działało, a mimo to nie działało. Zajrzałem do debuggera Chrome i plik jquery-1.7.1.min.js załadował się bez żadnych problemów. To wszystko było bardzo mylące. Nadal nie wiem, na czym polegał problem, ale zamknięcie przeglądarki, zamknięcie serwera programistycznego, a następnie próba jego rozwiązania.
źródło
Wystarczy umieścić adres jquery na górze kodu jquery
lubię to--
źródło
Miałem ten sam problem, a to dlatego, że moje odwołanie do pliku jQuery.js nie było w tagu. Gdy to zmieniłem, wszystko zaczęło działać.
Anthony
źródło
Sprawdź, czy zawiera dokładną ścieżkę do pliku jquery.
<script src="assets/plugins/jquery/jquery.min.js"></script>
jeśli dodasz to na dole strony, proszę wszystkich wywołać funkcję JS poniżej tej deklaracji.
Sprawdź za pomocą tego testu kodu,
Pokój!
źródło
Mamy ten sam problem .... ale przypadkowo sprawdziłem właściwości folderu i ustawiłem coś ...
Musisz sprawdzić właściwości każdego folderu, do którego masz dostęp.
Mam nadzieję, że to jest rozwiązanie ......
źródło
Jeśli używasz jQuery w asp.net, jeśli używasz strony wzorcowej i ładujesz tam plik źródłowy jquery, upewnij się, że masz nagłówek contentplace placeholder po wszystkich odwołaniach do skryptu jquery.
Miałem problem polegający na tym, że wszystkie strony, które korzystały z tej strony wzorcowej, zwróciłyby „$ nie jest zdefiniowany” po prostu dlatego, że niepoprawna kolejność powodowała uruchomienie kodu po stronie klienta przed utworzeniem obiektu jquery. Upewnij się więc, że masz:
W ten sposób kod będzie działał w kolejności i będziesz mógł uruchamiać kod jQuery na stronach potomnych.
źródło
W moim przypadku wskazywałem na JQuery hostowany przez Google. Zostało poprawnie dołączone, ale byłem na stronie HTTPS i dzwoniłem przez HTTP. Gdy naprawiłem problem (lub zezwoliłem na niebezpieczną zawartość), od razu się uruchomił.
źródło
Miałem ten sam problem i nie mogłem zrozumieć, co go spowodowało. Niedawno przekonwertowałem moje pliki HTML z japońskiego na UTF-8, ale nie zrobiłem nic z plikami skryptowymi. Jakoś plik jquery-1.10.2.min.js został uszkodzony w tym procesie (wciąż nie mam pojęcia jak). Naprawiono go, zastępując plik jquery-1.10.2.min.js oryginałem.
źródło
wygląda na to, że jeśli zlokalizujesz swoje pliki jquery.js w tym samym folderze lub w niektórych podfolderach, w których znajduje się plik HTML, problem Firebug zostanie rozwiązany. np. jeśli twój html znajduje się pod C: / folder1 /, to twoje pliki js powinny być gdzieś pod C: / folder1 / (lub C: / folder1 / folder2 itd.), a także odpowiednio zaadresowane w dokumencie html. mam nadzieję że to pomoże.
źródło
Mam ten sam problem i żaden przypadek nie rozwiązuje mnie. Jedyną rzeczą, która działa dla mnie, jest umieszczona w pliku Site.master, następna:
Przy src = "<% = ResolveUrl (" ") ... ładowanie jQuery na stronach z treścią jest prawidłowe.
źródło
Miałem bardzo podobny problem. W mojej aplikacji C # MVC JQuery nie został rozpoznany. Musiałem przenieść @ Scripts.Render („~ / bundles / jquery”) z dolnej części mojego pliku _Layout.cshtml do nagłówka sekcji. Upewnij się także, że kupiłeś Jquery jako pakiet Nuget, jeśli korzystasz ze studia wizualnego!
źródło
Istnieje sposób, aby automatycznie ładował javascript przed uruchomieniem reszty kodu.
Przejdź do Views \ Shared_Layout.html i dodaj następujące
źródło
jeśli
script
tag madefer
atrybut, pokazuje błądi musi usunąć atrybut
defer
zscript
taguźródło
Jest to powszechny problem, aby rozwiązać ten problem, musisz sprawdzić jakiś punkt
Szczegółowe informacje znajdują się w tym blogu kliknij tutaj
źródło