Ajaxで取得したHTMLデータからimgタグを取得する

AjaxでHTMLデータ取得して、さらにそのデータからimgタグを抜き出して処理を行ってみます。
今回はimgタグを取得するようにしていますが、別のタグやclassでも問題ありません。

サンプルコード

text.html

Ajaxで取得するHTMLです。

<div id="page">
	<img src="img01.jpg" alt="" />
	<img src="img02.jpg" alt="" />
	<img src="img03.jpg" alt="" />
	<img src="img04.jpg" alt="" />
</div>

JavaScript

AjaxでHTMLを取得して、そのデータに含まれるimgタグのsrcをconsoleで表示させてみます。

$(function() {
	$.ajax({
		type: 'GET',
		url: 'test.html',
		dataType: 'html',
		success: function(data) {
			// Ajaxで取得したデータからimgタグを取得する
			var imgs = $(data).find('img');
			for (var i = 0; i < imgs.length; i++) {
				// imgのsrcを取り出す
				console.log($(imgs[i]).attr('src'));
			}
		}
	});
});

Ajaxで取得したデータからimgタグを抜き出すデモページ

注意点として、以下のようにbody直下にimgタグがある場合、そのimgタグは取得できません。

text.html

<body>
<img src="img01.jpg" alt="" />
<div id="page">
	<img src="img02.jpg" alt="" />
	<img src="img03.jpg" alt="" />
	<img src="img04.jpg" alt="" />
</div>
</body>

body直下の要素を取得する場合、find()ではなくfilter()を使う必要があります。
Ajaxで取得したHTMLにfindを使って絞り込めない | cly7796.net

ただし、filter()にした場合は逆にbody直下以外が取得できなくなるので、対応方法としてはAjaxで取得するHTMLを変更する形がよいと思います。
 

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年11月
 12
3456789
10111213141516
17181920212223
24252627282930