2010-08-24 2 views
5

Dies könnte eine sehr einfache Sache in Jquery sein, aber ich bin nicht in der Lage, es herauszufinden. Mein HTML-Dokument hat die folgende StrukturText von einem Absatz in jquery erhalten

<div class="body"> 
<a href="/question?id=70"><p>This is the text I want to extract</p></a> 
</div> 

ich versucht, dieses

$("body").find("a p").text() 

aber dies scheint nicht für mich arbeiten. Ich kann das Absatzobjekt, aber nicht den Text abrufen. Ich habe es mit console.log ohne Nutzen getestet.

+0

Wenn 'text()' funktioniert nicht für Sie, Sie wählen möglicherweise nicht aus, was Sie denken, dass Sie sein sollten. –

+1

$ ("body")! = $ (". Body") - der erste erhält den Tag-Body, der zweite erhält die Body-Klasse. – Topera

Antwort

8

Was sollten Sie haben arbeiten (you can test it here), stellen Sie sicher, dass Sie es läuft, wenn das DOM bereit ist jedoch, wie folgt aus:

$(function() { 
    alert($("body").find("a p").text()); //or just $("a p").text() 
}); 

Wenn es früher ausgeführt wird, kann nicht die Elemente bereit sein, und Ihr Selektor findet keine Übereinstimmungen.

Wenn Sie die Klassebody stellen Sie sicher auswählen möchten ".body" verwenden, anstatt "body" (die die <body> Element wählen würde). Hier ist eine Version der .class selector mit:

$(function() { 
    alert($(".body a p").text()); 
}); 
+0

Danke für jsfiddle .. das ist, was ich suchte, um mit JS herumzuspielen. – satyajit

+0

Ich habe die vermisst. Vor dem Klassennamen habe ich es vergessen :) Auch Topera hat den Fehler gefunden – satyajit

0

die .html() Funktion ruft einen Knoten inneren html.

$('.body a p').html(); 

sollte es tun

0

nicht sicher, ob dies ein Problem verursachen würde, aber Sie haben ungültigen Markup. Von "The global structure of an HTML document" vom W3C

Im Allgemeinen können Block-Elemente Inline-Elemente und andere Block-Level-Elemente enthalten. Im Allgemeinen enthalten Inline-Elemente möglicherweise nur Daten und andere Inline-Elemente. Dieser strukturellen Unterscheidung liegt die Idee zugrunde, dass Blockelemente "größere" Strukturen als Inline-Elemente erzeugen.

a Elemente sollen durch Blockelemente wie p enthalten sein, nicht umgekehrt.

0

hier ist Ihr Absatzelement in HTML oder PHP-Datei, die tt id assign

<p id="tt">ALert Message </p>
in in Jquery-Datei ist der Text Ihres Absatzes mit tt-ID sein kann

var tt = $("#tt").text(); 
 
alert(tt);
zu erhalten

adaequat für jquery-3.1.1.js