6

我有很多 div 元素需要重新计算它们的高度。div 位于另一个 id="content" 的 div 中。

我正在使用这样的jQuery:

$("#content div").css("height", "*=" + Math.random());

大约有 1000 个 div 像这样重新计算。这样做需要一些时间,我理解这是因为布局会为每个元素重新计算一次。它只需要几秒钟,但它的方式很多。

我之前得到了一个关于使用常规 JavaScript 文档片段的提示。我希望能够使用 jQuery 来做到这一点。

有什么方法可以使用 jQuery 来分离这些 div 并在将它们写回之前在活动 DOM 之外对其进行操作,以便在我完成操作之前不会重新计算布局?

4

1 回答 1

2

尝试使用detach以下内容:

HTML

<div id="content" >
    <div class="test" style="height:100px;">
</div>
    <div class="test" style="height:100px;">
</div>
    <div class="test" style="height:100px;">
</div>
    <div class="test" style="height:100px;">
</div>
    <div class="test" style="height:100px;">
</div>

jQuery

var el = $('.test').detach(); 
el.each(function(index){
    var height = $(this).attr('style').substring($(this).attr('style').indexOf('height:')+7,$(this).attr('style').indexOf('px'));
    $(this).attr('style','height:'+height*Math.random()+'px');   
});
$('#content').append(el);

我在处理分离元素的高度时遇到了麻烦。我确实找到了一种方法来做到这一点,但如果你在样式属性中有高度,你可以从那里提取信息并进行操作。

这是一个例子,希望对你有所帮助。

http://jsfiddle.net/4Sb8T/

于 2013-11-04T22:33:57.813 回答