591 Stimmen

JQuery - $ ist nicht definiert

Ich habe eine einfache Jquery-Klick-Ereignis

<script type="text/javascript">
    $(function() {
        $('#post').click(function() {
            alert("test"); 
        });
    });
</script>

und eine Jquery-Referenz, die in der site.master definiert ist

<script src="<%=ResolveUrl("~/Scripts/jquery-1.3.2.js")%>" type="text/javascript"></script>

Ich habe überprüft, dass das Skript korrekt aufgelöst wird, ich kann das Markup sehen und das Skript direkt in Firebug anzeigen, also muss ich gefunden werden. Allerdings bin ich immer noch bekommen:

$ ist nicht definiert

und keine der Jquery funktioniert. Ich habe auch versucht, die verschiedenen Variationen von diesem wie $(document).ready und jQuery usw.

Es ist ein MVC 2 app auf .net 3.5, ich bin sicher, ich bin wirklich dumm, überall auf Google sagt zu überprüfen, die Datei korrekt referenziert wird, die ich überprüft habe und wieder überprüft, bitte beraten! :/

6voto

Mimouni Punkte 3226

Nach einigen Tests habe ich eine schnelle Lösung gefunden, Sie können oben auf Ihrer Index-Seite hinzufügen:

<script>
$=jQuery;
</script>

es funktioniert sehr gut :)

5voto

Walmac Punkte 183

Ich hatte das gleiche Problem und löste es durch die Verwendung von

document.addEventListener('DOMContentLoaded', () => {
 // code here
});

4voto

alan Punkte 49

Ich bekam die gleiche Fehlermeldung, wenn ich die jQuery-Referenz falsch geschrieben habe und statt type="text/javascript" Ich tippte "...javascirpt". ;)

4voto

Alexender Dumma Punkte 41

Es klingt, als ob jQuery nicht richtig geladen wird. Welche Quelle/Version verwenden Sie?

Alternativ könnte es eine Namespace-Kollision sein, also versuchen Sie, jQuery explizit zu verwenden, anstatt $ . Wenn das funktioniert, können Sie Folgendes verwenden noConflict um sicherzustellen, dass der andere Code, der die $ geht nicht kaputt.

3voto

Kyle McVay Punkte 438

Dieser Fehler bedeutet, dass jQuery noch nicht auf die Seite geladen wurde. verwenden $(document).ready(...) oder irgendeine Variante davon wird nichts nützen, da $ ist die jQuery-Funktion.

Verwendung von window.onload sollte hier funktionieren. Beachten Sie, dass nur eine Funktion zugewiesen werden kann window.onload . Um zu vermeiden, dass die ursprüngliche Onload-Logik verloren geht, können Sie die ursprüngliche Funktion wie folgt dekorieren:

originalOnload = window.onload;
window.onload = function() {
  if (originalOnload) {
    originalOnload();
  }
  // YOUR JQUERY
};

Dadurch wird die Funktion ausgeführt, die ursprünglich der window.onload und führt dann // YOUR JQUERY .

Voir https://en.wikipedia.org/wiki/Decorator_pattern für weitere Details über das Dekorationsmuster.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X