2011-01-02 11 views
0

私はHTMLノードのリストを持っています。問題は、ノードがCMSから書き込まれているため、あらゆる種類の改行とスペースが付いてくることです。したがって、私はthis questionでdescibedメソッドを使用してJSでスペースを削除しています。しかし、問題はIE(9ではなく)では空白が親ノードの子リストの一部ではなく、そのメソッドをIEで役に立たないものにすることです。しかし、IE 7(またはIE 7をエミュレートするIE 9以上)では改行が無視されるため、明確になっています。それはIE 8を厄介者にしてしまいます。私は、改行が実際にouterHTMLの一部であることを発見し、outerHTMLの簡単なリセットがトリックなかったこと - そのような:IE 8 JavaScriptを使用してノード間の改行を削除する

node.outerHTML = node.outerHTML 

は、しかし、これはintirelyノードをリセットし、したがって、すべてのイベントおよびその他の設定を削除しますノード上では、実際にはそれほど良いものではありません。

私の質問は今です:ノードからの改行を削除する方法はありますかノードのouterHTML whitoutノードをリセットしますか?私はズーム:1で試してみましたが、無駄です。誰もがこれについての経験があることを願っています。

HTMLは、多かれ少なかれ、このようなものです:

<div class="items"> 
    <div class="item"></div> 
    <div class="item"></div> 
    <div class="item"></div> 
    <div class="item"></div> 
    <div class="item"></div> 
    <div class="item"></div> 
    <div class="item"></div> 
    <div class="item"></div> 
    <div class="item"></div> 
    <div class="item"></div> 
    <div class="item"></div> 
    <div class="item"></div> 
</div> 

が、それは、任意のタグを処理することができるはず<div>である必要はありません。 CSSは非常に単純であり、このような何かを行く:

.items { white-space: nowrap; } 
.items .item { display: inline-block; background: red; height: 150px; width: 180px; } 

とIE(6-7(8))スタイルはこのようなものです:

.items .item { *display: inline; *zoom: 1; } 

私はそれを "削除" することが可能であることを知っていますこのようなCSSを介してスペースを:

.items { word-spacing: -0.33em; letter-spacing: -0.33em; } 
.items .item { word-spacing: normal; letter-spacing: normal; } 

私はこれが時々物事をねじ込む醜いハックであることがわかります。だから私は既にJSを介して要素を操作しているので、私はJSを介してスペースを削除することを望んでいました。

私はミーン何の小さなプレビュー:

No spacing should appear between the squares http://tokimon.dk/stackoverflow/display-inline-spacing.png

+0

@Tokimonあなたはサンプルを投稿することができますあなたのCMSが投げているHTML?テストケースとして使用できます。 :) –

+0

私はHTMLを追加しましたが、まだCMSに実装されていないので、HTMLはまっすぐです。 – Tokimon

+0

@ Tokimon - 待ってます。改行を削除する、または空の要素を削除することを意味します*。これらの2つの大きな違いがあります。 –

答えて

0

は、IEのボックスモデルの問題のようですね。あなたはあなたの頭にこのメタタグを持っていますか?

<meta http-equiv="X-UA-Compatible" content="IE=8" /> 
+0

申し訳ありませんm8。 セクションには、すでにがあります。それは一般的なIEの問題のようですが、私は本当になぜスペースがIE 6 + 7で排除されたのか分からない。そして、私はHTML5のdoctypeを使っています。 – Tokimon

0

簡単なテストから、何が欲しいのは、純粋なCSSで実現することができます - ちょうどすべての "アイテム" を持っているフロート:

.items .item { float: left; background: red; } 

更新テストケース:http://jsfiddle.net/yahavbr/jBH5D/4/

+0

ええ、私は知っている...しかし、その後、私は避けることを望んでいたお互いの下にラッピングからアイテムを防ぐために、コンテナの幅を指定する必要があります。 – Tokimon

+0

@ Tokimonもしあなたがそれを相対的に望むなら、現在の文書の幅に応じてクライアント側のコードを使って簡単に幅を設定することができます。 –

+0

私は知っている..しかし、ノードを追加または削除するたびに幅を再計算する必要があります。ちょっと吸うとリソースを消費しています:) – Tokimon

関連する問題