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! :/

24voto

angularsen Punkte 7545

Verwenden Sie eine Skript-Abschnitt in der Ansicht und im Stammlayout.

Legen Sie alle in der Ansicht definierten Skripte in einen Skriptabschnitt der Ansicht. Auf diese Weise können Sie das Master-Layout dieses Skript laden lassen, nachdem alle anderen Skripte geladen wurden. Dies ist die Standardeinstellung, wenn Sie ein neues MVC5-Webprojekt starten. Bei früheren Versionen bin ich mir nicht sicher.

Ansichten/Foo/MyView.cshtml:

// The rest of your view code above here.

@section Scripts 
{ 
    // Either render the bundle defined with same name in BundleConfig.cs...
    @Scripts.Render("~/bundles/myCustomBundle")

    // ...or hard code the HTML.
    <script src="URL-TO-CUSTOM-JS-FILE"></script>

    <script type="text/javascript">
      $(document).ready(function () {

        // Do your custom javascript for this view here. Will be run after 
        // loading all the other scripts.            
      });
    </script>
}

Ansichten/Gemeinsam/_Layout.cshtml

<html>
<body>
    <!-- ... Rest of your layout file here ... -->

    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/bootstrap")
    @RenderSection("scripts", required: false)
</body>
</html>

Beachten Sie, wie die Skripte Abschnitt wird in der Stammlayoutdatei zuletzt gerendert.

21voto

Nesar Punkte 5469

Das bedeutet, dass Ihre jQuery-Bibliothek noch nicht geladen wurde.

Sie können Ihren Code nach dem Ziehen der jQuery-Bibliothek verschieben.

oder Sie können etwas wie dieses verwenden

window.onload = function(){
  // Your code here
  // $(".some-class").html("some html");
};

16voto

Naveed Abbas Punkte 1161

Wie oben erwähnt, geschieht dies aufgrund des Konflikts der Variablen $.

Ich löste dieses Problem, indem ich eine sekundäre Variable für jQuery ohne Konflikt reservierte.

var $j = jQuery.noConflict();

und verwenden Sie es dann überall

$j( "div" ).hide();

Weitere Einzelheiten finden Sie unter ici

13voto

Wolfgang Fahl Punkte 13424

Stellen Sie sicher, dass Sie jquery wirklich laden dies ist no jquery - das ist die Benutzeroberfläche!

  <script language="JavaScript" 
    src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.0/jquery-ui.min.js">
  </script>

Dies ist eine korrekte Skriptquelle für Jquery:

 <script language="JavaScript"  src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>

7voto

tambler Punkte 2949

Verwenden Sie andere JavaScript-Bibliotheken? Wenn ja, müssen Sie wahrscheinlich jQuery im Kompatibilitätsmodus verwenden:

http://docs.jquery.com/Using_jQuery_with_Other_Libraries

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