4 Stimmen

Warum funktioniert jQuery $(this).text() nicht innerhalb eines Links?

Gibt es eine Idee, warum das nicht funktioniert?

<a href="javascript:alert($(this).text())">Alert This Text Here</a>

Ich erwarte, dass es "Alert This Text Here", aber stattdessen bekomme ich einen jQuery-Fehler (G ist undefiniert)

Was übersehe ich?

17voto

Sampson Punkte 258265

Ich gehe davon aus, dass "dies" nichts mit dem Link zu tun hat, auf den Sie klicken. Es wurde nie eine Assoziation hergestellt. this leitet seine Assoziation nicht von Markup/Syntax ab.

Die folgenden Werke:

<a href="#" onClick="alert($(this).text());">Some Text</a>

Idealerweise sollten Sie Ihre Skripte von Ihrem Markup getrennt halten. Sie sollten es so machen:

$("a.someClass").click(function(event){
  event.preventDefault();
  alert($(this).text());
});

In diesem Beispiel müsste Ihr Anker eine class="someClass" haben, um zu funktionieren.

2voto

Sean Clark Hess Punkte 15269
<a id="alert">Alert This Text Here</a>
...
$(function() {
  $("#alert").click(function() {
    alert($(this).text());
  });
});

Wie der oben genannte Poster erwähnt hat, muss dies in einem Selektor sein, um einen Kontext zu haben.

1voto

spoulson Punkte 20898

Wenn Sie den "onclick"-Ereignishandler verwenden, this zur Verfügung stehen, um die text() .

0voto

brendan Punkte 28331

In jQuery bezieht sich $(this) auf ein jQuery-Objekt in der Regel im Zusammenhang mit einer Schleife oder einem anderen Selektor. Wenn Sie also ein Objekt in jQuery auswählen möchten, dann verwenden Sie $(this).

Ejemplo:

$("a").click(function(){alert($(this).text());});  

Dies wird funktionieren, weil $(this) im Kontext der ausgewählten Links steht.

Ich denke, Sie bekommen es mit dem Standard-Javascript "this" Referenz, die Ihnen die aktuelle DOM-Objekt geben wird verwechselt.

Dieser Beitrag enthält eine gute Erklärung: http://remysharp.com/2007/04/12/jquerys-this-demystified/

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