前提:
ドキュメントからhtmlのチャンクを取り出してから、div idを変更し、同じドキュメント内の元のhtmlの下に、いくつかの変更を加えて同じhtmlチャンクを再印刷したいと思います。この「X」回を繰り返します。
問題:
再印刷しようとすると、htmlチャンクのdivにアクセスできないようです。
私のステップ
ページにいくつかのhtmlがあり、divで囲まれています。
<div id="a"> <div id="aaa">...</div> <div id="bbb">...</div> <div id="ccc">...</div> </div>
jQueryを使用してこのhtmlを抽出します
var h = $("#a").html();
jQueryオブジェクトに変換します
var jqObj = $(h);
そして、その中のdivを調べます
$("div", jqObj).each(function (idx, elem) {
//elem is a HTMLDivElement type
var jq = $(this);
// I want to access the id, class etc. of the div elements here
});
'each'は、divの数だけ正しく反復します。
しかし、$(this).attr( "id")やelem.idなど、私が何をしても、すべて未定義として返されます。$(this).html()を印刷しましたが、コンテンツが含まれているようですが、divからのIDがすべて削除されているようです。
私は何が間違っているのですか?ID(HTMLを再度出力する前に変更する必要があります)およびこのHtmlDivElementの他のプロパティを取得するにはどうすればよいですか?
問題が解決しました
clone()の使用に関する以下のコメントを参照してください。他の誰かがそれを必要とする場合に備えて、これが私の関数です。
function Inserts() {
//get the html
var h = $("#a").clone();
//now turn it into a jquery object
var jqObj = $(h);
//now parse it, let's make some modifications
var someID = "0";
$("div", jqObj).each(function (idx, elem) {
if ($(this).attr("id") == undefined)
return;
$(this).attr("id", someID + "_" + $(this).attr("id"));
});
$("#target_div").append(jqObj.html());
}