2 Stimmen

jQuery: Warum schlägt der Selektor fehl?

<html>
 <head>
  <script src="../jquery.js" type="text/javascript"> </script>
  <script type="text/javascript">
   $(".demo").click(function() {
     alert("JavaScript Demo");
    });
  </script>
 </head>
 <body>
  <p class="demo">a paragraph</p>
 </body>
</html>

Warum hat die Klickfunktion nicht reagiert?

Danke.

7voto

Marcelo Cantos Punkte 173498

Sie führen den Code zu früh aus. Sie sollten ihn in einen Document-Ready-Handler verpacken, den jQuery so unterstützt:

$(function() {
  $(".demo").click(function() {
    alert("JavaScript Demo");
  });

  // Put other initialisation code here...
});

Dadurch wird sichergestellt, dass Ihr Code ausgeführt wird, nachdem das Dokument geladen wurde.

3voto

Peter Ajtai Punkte 55551

Sie führen den Code aus, wenn das DOM noch nicht fertig ist.

Es gibt 2 Lösungen:

Lösung Eins:

Fügen Sie das Javascript nach den Elementen ein, die es betrifft. Vorzugsweise so weit unten auf der Seite wie möglich.

Dies ist nicht immer möglich, aber es ist von YUI vorgeschlagen, um Ihre Website zu beschleunigen .

<html>
 <head>
  <script src="../jquery.js" type="text/javascript"> </script>
 </head>
 <body>
  <p class="demo">a paragraph</p>
  <script type="text/javascript">
     // This is after .demo
   $(".demo").click(function() {
     alert("JavaScript Demo");
    });
  </script>
 </body>
</html>

Lösung zwei:

Verpacken Sie Ihr Skript in ein fertiges Dokument. In jQuery gibt es mehrere Formen . Am schnellsten lässt sich Folgendes eingeben $(function() { ... }); :

<html>
 <head>
  <script src="../jquery.js" type="text/javascript"> </script>
  <script type="text/javascript">
     // doc ready
   $(function() {            
     $(".demo").click(function() {
       alert("JavaScript Demo");
      });
   });
  </script>
 </head>
 <body>
  <p class="demo">a paragraph</p>
 </body>
</html>

0voto

Tola Punkte 2351

So sollten Sie vorgehen:

<html>
 <head>
  <script src="../jquery.js" type="text/javascript"> </script>
  <script type="text/javascript">
    $(document).ready(function() {

     $(".demo").click(function() {
    alert("JavaScript Demo");
  });

    });
  </script>
 </head>
 <body>
  <p class="demo">a paragraph</p>
 </body>
</html>

Hier ist eine Demo

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