如何在不使用jQuery重新计算布局的情况下操作元素

时间:2013-11-04 22:22:39

标签: javascript jquery

我有很多div元素,我需要重新计算它们的高度。 div在另一个div中,id =“content”。

我正在使用这样的jQuery:

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

大约有大约1000个div被重新计算。这需要一些时间,我理解这是因为每个元素重新计算一次布局。它只需要几秒钟,但它可以达到很多。

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

有没有办法,使用jQuery来分隔这些div并在将它们写回活动DOM之前将它们操作,以便在我完成操作之前不重新计算布局?

1 个答案:

答案 0 :(得分: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);

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

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

http://jsfiddle.net/4Sb8T/