JQueryを使用してhtml-stringから要素を取得しますが、コンソールでは常に未定義を取得します。私のストリングは:
<td class="test">asd</td><td class="second">fgh</td><td class="last">jkl</td>
そして、td.testを取得したいです。
私はテストしました:
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);
そしてさらにいくつか、しかし何も動作しません:/
誰かが私の問題の解決策を知っていますか?
まず、jQuery.parseHTML
HTMLを要素の配列に解析します。それをjQueryコレクションに変換し、filter
を使用して、セレクターに一致する要素にコレクションを制限することができます。
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>
試してください:
console.log($('<td class="test">asd</td><td class="second">fgh</td><td class="last">jkl</td>').filter('.test').html());
または:
console.log($('.test', '<table><td class="test">asd</td><td class="second">fgh</td><td class="last">jkl</td></table>').html());
このようなノードのコレクションでjQueryセレクターを使用することはできません。この問題を回避するために単一のノードにラップすることができます。ラッピング<tr>
ノード。
var htmlBits = '<tr>'
+ '<td class="test">asd</td><td class="second">fgh</td><td class="last">jkl</td>'
+ '</tr>';
そして、それは動作します:
console.log($('.test', htmlBits).text()); // outputs 'asd'
JSFiddle (コンソールを表示してログを表示することを忘れないでください)。
次の形式の応答があります。
<div>...
</div>
<div>...
</div>
<div>...
</div>
そして@minitechのメソッドは、セレクターが機能しなかったHTMLノードの配列をもたらしました。
だから私はこれを試してみましたが、うまくいきました:
$.ajax({
url:
success: function($data) {
var $parsed_data = $('<div/>').append($data);
var found = $parsed_data.find(".Selector");
...
}
});