gpt4 book ai didi

javascript - Jquery slideToggle 缓慢且在 DOM 树顶部没有响应

转载 作者:行者123 更新时间:2023-11-28 16:58:43 25 4
gpt4 key购买 nike

我正在使用 Jquery slideToggle 来显示/隐藏 DIV 元素。当您单击一个 DIV 元素时,它会显示/隐藏下一个 DIV 元素。

当我的代码中有大量 DIV 元素时,slideToggle 非常慢并且在 DOM 树的顶部没有响应。

它在 DOM 树的顶部变慢的原因是什么?怎么可能更快?这是我的示例代码(它包含很少的 DIV 元素,并且运行良好)。

注意:slideToggle 在 DOM 树底部的 DIV 元素上工作得很好。问题出在 DOM 树顶部的 DIV 元素上。

<html>

<head>
<title> Home page </title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>

<script>
$(document).ready(function() {
$(".panel-heading").click( function() {
$(this).next().slideToggle();
});
});
</script>

</head>

<body>
<div id="container">
<div class="panel panel-default">
<div class="panel-heading nodeHeading">Panel heading</div>
<div class="panel-body" style="display:none;">Panel body</div>
</div>
<div class="panel panel-default">
<div class="panel-heading nodeHeading">Panel heading</div>
<div class="panel-body" style="display:none;">Panel body</div>
</div>
<div class="panel panel-default">
<div class="panel-heading nodeHeading">Panel heading</div>
<div class="panel-body" style="display:none;">Panel body</div>
</div>
<div class="panel panel-default">
<div class="panel-heading nodeHeading">Panel heading</div>
<div class="panel-body" style="display:none;">Panel body</div>
</div>
</div>
</body>
</html>

最佳答案

slideToggle 函数导致回流(请参阅 reflow and repaint 的定义/差异),浏览器必须计算网页并呈现它。

当您在 dom 树的底部执行 slideToggle 时,浏览器只需要重新计算网页最底部的布局,因为切换不会影响切换元素的上侧。显然网页的最底部很小,因此在开始切换之前需要很短的时间。

而如果您在 dom 树的顶部执行 slideToggle,浏览器必须重新计算几乎整个网页的布局,因此在开始切换之前需要更多时间。

实际上,如果元素太多,似乎没有很好的解决方案,因为昂贵的操作reflow是不可避免的。

关于javascript - Jquery slideToggle 缓慢且在 DOM 树顶部没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31639961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com