开发者

IE 8 remove line break between nodes with JavaScript

Ok i have a list of HTML nodes which should be inline with no spacing between them. The problem is, that the nodes are written from a CMS and therefore will come with all sorts of linebreaks and spaces. Therefore I'm removing the spaces with JS using the method descibed in this question. The problem is, however, that in IE (not 9) the white spaces isn't part of the childrens list of the parent node, rendering the method useless in IE. However IE 7 (or at least IE 9 emulating IE 7) ignores the linebreaks, so that one is in the clear. That leaves IE 8 as the troublemaker. I discovered that the line break is actually a part of the outerHTML and that a simple reset of the outerHTML did the trick - like so:

node.outerHTML = node.outerHTML

However this will reset the node intirely and therefore removing all events and other settings on the node, which isn't really any good.

So my question is now: Is there a way to remove that linebreak from the nodes outerHTML whitout resetting the node? I've tried with zoom: 1, but to no avail. Hope anyone has any experience with this.

The HTML is more or less like this:

<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>

but it doesn't have to be <div> it should be able to handle any tag. The CSS is pretty simple and goes something like this:

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

and IE (6-7(8)) style is like this:

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

i know that it is possible to "remove" that space via CSS like this:

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

but I find this to be an ugly hack that sometimes screw things up. So since I'm a开发者_如何学Clready manipulating the elements via JS, then I just hoped to remove the spaces via JS.

A little preview of what i meen:

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


Sounds like an IE box model problem. Do you have this meta tag in your HEAD?

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


From quick test, what you want can be achieved with pure CSS - just have all "items" float:

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

Updated test case: http://jsfiddle.net/yahavbr/jBH5D/4/

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜