-1

このjQueryが不正な形式のHTMLを出力している理由がわかりません。

<img src="http://farm6.static.flickr.com/5300/5459333519_0bfb0763b0_m.jpg">

このコードから:

$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?id=59597329@N08&lang=en-us&format=json&jsoncallback=?", function(data){
    $.each(data.items, function(i,item){
        $("<img>").attr("src", item.media.m).appendTo("#mac");
    });
});

#mac画像を保持するdivです

誰かがこれを理解できますか?

4

2 に答える 2

5

そのHTMLは完全に有効です。(XHTMLの場合、自動終了要素を使用する必要があります。)

しかし、それは問題ではありません。jQueryが物事を変更するときまでに、それはDOMと相互作用しているからです(jQueryが隠蔽innerHTMLできる場合に使用することを除いて、物事のマークアップ部分はほとんど終わっています)。したがって、DOM構造をHTML文字列として表示するツール(Firebugなど)を除いて、結果はマークアップとして表示されません。XHTMLドキュメントを使用している場合、使用しているツールが表示目的でXHTML規則に準拠していない可能性がありますが、これは表示の問題であり、ページの実際の問題ではありません。

このように考えてください。マークアップは、ソースコードの文字列リテラルのようなものです。DOMは、実行時の実際の文字列のようなものです。デバッガーは、実行時に文字列の内容を表示します。通常、文字列リテラルと同様の表記法を使用します(ただし、それは異なります)。同様に、FirebugやChromeの開発ツールなどのツールは、マークアップ表記を使用してDOM構造を表示します。しかし、それはツールの表示にすぎません。

于 2011-02-20T12:47:11.903 に答える
0

.appendTo「問題」を引き起こすのはjQueryではありません。このようなスニペットで:

var bar = document.createElement('img');
    bar.setAttribute('src', 'http://farm6.static.flickr.com/5300/5459333519_0bfb0763b0_m.jpg');
    document.body.insertBefore(bar, document.body.firstChild);

<img>また、を閉じずにノードを作成します</img>。とにかく、これは絶対に問題なく、すべてのブラウザで有効です。一部のXHTML検証でこれについて不満がある場合は、それを適切に無視してかまいません。

于 2011-02-20T12:47:50.277 に答える