2017-01-04 2 views
1

Ich habe folgende Html stirng in einer JS-Variable gespeichert:Auswahl td aus string

<td> 
    <input onclick="Clicked(this);" type="radio" name="mmBox" id="mmBox"> 
</td> 
<td>First Cell</td> 
<td>2nd TD</td> 
<td>3rd TD</td> 
<td>4th TD</td> 
<td>5th TD</td> 
<td></td> 

ich je nach Bedarf muss ich wählen 2., 3. und 4. <td>

Ich habe versucht, die folgenden aber es zurückgeben nichts:

console.log("6 " + $(selectedRow).wrap("<tr></tr>").children("td:nth-child(2)").html()); 

oder

console.log("6 " + $(selectedRow).find("td:eq(2)").text()); 

Auch mit .find und .select Methoden, aber es gibt nichts zurück.

Bitte helfen Sie mir, ich will <td> und Wert abfragen Inneren

+0

Was ist die Notwendigkeit verwenden ? Sie können '.find()' hier nicht verwenden. Sie müssen '.nextAll' verwenden. –

Antwort

2

Unter der Annahme, selectedRow Variable, die die HTML-Zeichenfolge enthält, die Sie gebucht haben, sollten Sie die .filter Methode anstelle der .find verwenden:

$(selectedRow).filter(":eq(2)").text(); 

Oder durch die .eq Methode:

$(selectedRow).eq(1).text(); 

Beachten Sie, dass .eq ist nullbasiert, also wählt 1 das zweite Element in der Menge aus.

+0

@kristjabreinhold das ist nicht genau, finden Sie eine Sammlung von *** Nachkommen zurück *** – charlietfl

2

Die wrap() Methode jedes td mit separatem tr Element wickeln, ich glaube, Sie ein einzelnes tr benötigen, die das Element alle für diese Verwendung wrapAll() Verfahren wickelt. Verwenden Sie die Methode filter(), da Sie td aus dem jQuery-Element herausfiltern müssen und nicht von seinen untergeordneten Elementen. Ein Wrapping mit tr ist völlig unnötig, wenn Sie nur den Inhalt holen wollen.

var selectedRow = '<td><input onclick="Clicked(this);" type="radio" name="mmBox" id="mmBox"></td><td>First Cell</td><td>2nd TD</td><td>3rd TD</td><td>4th TD</td><td>5th TD</td><td></td>'; 
 
console.log("6 " + $(selectedRow).wrapAll("<tr></tr>").filter("td:nth-child(2)").html()); 
 
// by removing code which wraps the elements 
 
console.log("6 " + $(selectedRow).filter("td:nth-child(2)").html());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+1

Got it. Könnte funktionieren. Es tut uns leid. –

2

es anders tun um .... ein Zeilenelement erstellen erste und die Zellen in dieser Zeile gesetzt, dann können Sie find auf dem Zeilenobjekt

var $row = $('<tr>').html(selectedRow); 
console.log("6 " + $row.find("td:eq(2)").text());