2011-10-26 27 views
0

可能性の重複:.html()の親を取得する方法はありますか?

<html> 
    <head></head> 
    <body></body> 
</html> 

$('html').html()と私は取得のみ:

<head></head> 
    <body></body> 

Get selected element's outer HTML

私はこのコードを持っています0

どのようにコード全体を取得できますか?私が使用している要素の親でもあります。.html() ...

+0

一方で、これは技術的な面から興味深い質問のように思えますが、他方ではなぜ「」でこれをしたいのですか?私が見た95%のページでは、 "" + $( "html")、html()+ ""と言うことができます。 – nnnnnn

答えて

1

ビット:それは全部のクローンを作成する必要があるため

$('<div />').html($('html').clone()).html(); 

は、ページ上のHTMLの多くの古いブラウザでは時間がかかる可能性があります。

編集:あなたはそれをしないjQueryの機能を使用する場合は、1つだけ書く:

$.fn.outerHtml = function (a) { 
    if (a) { 
     a = $(a).insertBefore(this); 
     this.remove(); 
     return a; 
    } 
    return $('<div />').html($('html').clone()).html(); 
}; 

は、それからちょうど$('html').outerHtml()を呼び出します。

0

私は多くの方法があると思います。 jQuery("html")[0].outerHTML;またはjQuery("html").attr("outerHTML");

編集:これはクロスブラウザではなく、私はそれを忘れていました。 Firefoxはこれをサポートしていません。そのための(クローニング)ハックがあります。

編集: FFをサポートするためにHow do I do OuterHTML in firefox?を参照してください。ハックの

+0

「outerHTML」はIEのみです。 – BoltClock

0

これについて何:

$('<div>').append($('html').clone()).remove().html(); 
0

とにかく、あなたが<html>を取得しようとしているし、それが正しい文書でのみ<html>タグすることになった場合 - なぜそれを手動で追加していないinnerHTMLプロパティですか?

2

このjQueryの拡張試してみてください。

jQuery.fn.outerHTML = function(s) { 
    return (s) ? this.before(s).remove() : jQuery("<p>").append(this.eq(0).clone()).html(); 
} 

をあなたはこのようにそれを呼び出すことができます。

$("html").outerHTML(); 

クレジットはthis pageに行きます。

関連する問題