1

次のようなテキストエリアを持つフォームがあります。

<textarea id="code"><a href='test.html'><img src='test.jpg'></a></textarea>

このコードを次のようなDOMオブジェクトに変換しています。

var code=$("#code").val();
var banner=$(code);

これを実行するとき:

alert(banner.html());

私は得る"<img src='test.jpg'>"、私は完全なコードを期待しています("<a href='test.html'><img src='test.jpg'></a>"

私が実行すると、私は期待したものをalert(banner.attr('href')取得します。これは、DOMオブジェクトが正しく完全であることを示しています。'test.html'

私が最終的にやりたいのは、HTMLで作業し、hrefで検索を実行し、それを操作して、結果をテキストエリアに書き戻すことです。それをDOMに変換することは、そのための最も論理的なステップのようです。

このJSFiddleにコードを入れました

ここで何が欠けていますか?HTMLをDOMに正常に変換し、操作し、HTMLに変換して、HTMLとして戻すには、何をする必要がありますか?

4

3 に答える 3

1

<a>はルート要素であるため、innerHTMLを取得し<img>ます。おそらく、outerHTMLが必要です。http ://jsfiddle.net/9Awu4/alert(banner[0].outerHTML);を 参照してください。

于 2012-10-30T01:03:57.753 に答える
1

jQueryオブジェクトにはアンカー要素が含まれていますが、htmlメソッドはjQuery要素の要素のHTMLコードを返さず、jQueryオブジェクトの要素のHTMLコードを返します。

要素を別の要素の中に入れて、HTMLコードを取得できます。

var html = $('<div>').append(banner).html();
于 2012-10-30T01:05:52.920 に答える
0

私は JSFiddleリンク)があなたが望むものだと思います:

// grab the html source
var code=$("#code").val();

// convert to dom
var banner = $('<div>').html(code);
// find anchor and change attribute
banner.find('a').attr("href","manipulated.html");

// back to source code
code = banner.html()

// set content back into text area
$("#code").val(code); 
于 2015-07-18T18:59:24.393 に答える