2011-07-31 9 views
3

divにdivがいくつか含まれています。 #allContent全体を文字列として返したいが、内部に含まれている表示されていないdivをすべて削除する。divを文字列で返しますが、可視部分のみです

filter(),:visiblecontents()の組み合わせで実現できると思いますが、どうすればよいか正確には分かりません。

+2

あなたがHTMLマークアップ、または単にテキストコンテンツをしたいですか? – user113716

+0

HTMLマークアップも – dmr

+0

div#allContentのコンテナはありますか? – Ehtesham

答えて

4
var clone = $('#allContent').clone() 
          .appendTo('body') 
          .find(':hidden') 
          .remove() 
          .end() 
          .remove(); 

var content = clone[0].outerHTML || $('<div>').append(clone).html(); 

例:http://jsfiddle.net/ChXPB/3/

EDIT:はouterHTMLのdiv要素が含まれるように、それを変更しました。

編集:ほとんどがチェーン化され、Firefox shimを修復しました。


一時的にクローンをDOMに追加する必要があるようです。

これはそれを行う必要があります。

$('#allContent').clone().find(':hidden').remove().end().html(); 

+0

div#allContentの親コンテナが存在する場合、bodyに追加する必要はありませんか? – Ehtesham

+0

@Ehtesham:ええ、最初にそれを含めるべきかどうかはわかりませんでしたが、そうすべきだと思われますので、Firefoxの修正で 'outerHTML'を使うように更新しました。 – user113716

1
var allContentsHtml = ''; 
$('#allContent div:visible') 
     .each(function() { 
        allContentsHtml += $(this).html(); 
        } 
      ); 

$('#output').html(allContentsHtml); 
+1

a
b
c
」のようなものは 'acb'になります – Dani

関連する問題