webentwicklung-frage-antwort-db.com.de

jQuery - Selektoren für eine HTML-Zeichenfolge

Ich werde mit jQuery ein Element aus einem HTML-String erhalten, aber ich bekomme in meiner Konsole immer ein undefined .. Mein String ist:

<td class="test">asd</td><td class="second">fgh</td><td class="last">jkl</td>

und ich möchte den td.test bekommen.

Ich habe getestet:

console.log($('.test', '<td class="test">asd</td><td class="second">fgh</td><td class="last">jkl</td>').innerHTML);
console.log($('.test', '<td class="test">asd</td><td class="second">fgh</td><td class="last">jkl</td>').html());
console.log($('.test', '<td class="test">asd</td><td class="second">fgh</td><td class="last">jkl</td>').first().innerHTML);

und noch einiges mehr, aber nichts funktioniert: /

Kennt jemand eine Lösung für mein Problem?

30
MaxiNet

Verwenden Sie zunächst jQuery.parseHTML, um den HTML-Code in ein Array von Elementen zu parsen. Dann können Sie es in eine jQuery-Auflistung konvertieren und mit filter die Auflistung auf Elemente beschränken, die einem Selektor entsprechen.

var html =
    '<td class="test">asd</td>' +
    '<td class="second">fgh</td>' +
    '<td class="last">jkl</td>';

var text = $($.parseHTML(html)).filter('.test').text();

console.log(text);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

53
Ry-

Versuchen:

console.log($('<td class="test">asd</td><td class="second">fgh</td><td class="last">jkl</td>').filter('.test').html());

oder:

console.log($('.test', '<table><td class="test">asd</td><td class="second">fgh</td><td class="last">jkl</td></table>').html());
4
J. Bruni

Sie können jQuery-Selektoren nicht für eine solche Sammlung von Knoten verwenden. Sie können einen einzelnen Knoten umschließen, um dies zu umgehen. Fügen Sie einfach z. ein umhüllender <tr>-Knoten.

var htmlBits = '<tr>'
  + '<td class="test">asd</td><td class="second">fgh</td><td class="last">jkl</td>'
  + '</tr>';

Und dann wird es funktionieren:

console.log($('.test', htmlBits).text()); // outputs 'asd'

JSFiddle (Denken Sie daran, die Konsole zu sehen, um das Protokoll anzuzeigen).

1
Charles Goodwin

Ich habe eine Antwort in der Form:

<div>...
</div>

<div>...
</div>

<div>...
</div>

Die Methode von @minitech führte zu einem Array von HTML-Knoten, bei denen der Selektor nicht funktionierte.

Also habe ich es ausprobiert und es hat gut geklappt :

$.ajax({
    url:
    success: function($data) {
         var $parsed_data = $('<div/>').append($data);
         var found = $parsed_data.find(".Selector");
         ...
    }
});
0
juanmf