gpt4 book ai didi

javascript - jQuery 选择器性能低下

转载 作者:搜寻专家 更新时间:2023-11-01 04:26:17 24 4
gpt4 key购买 nike

我正在以 MVC 格式 (php Codeigniter) 呈现 600 多个表单。这些表格中的每一个都有一个标有“更多选项”的按钮。当您单击此按钮时 - 位于同一父元素中的隐藏 div 将被切换,显示更多输入字段和数据。问题是同级切换在控制台中很快,但是当我单击实际按钮时,需要很长时间才能触发。

使用 id 是推荐的解决方法,但是当我要处理这么多 div 元素时,它有点不切实际。

这是我的js文件

jQuery(document.ready(function(){
jQuery("form >button[name='more_data'].meta_button").click( function(){
jQuery(this).siblings("div.meta").toggle("fast");
});
});

这是结构(有 650 个这样的 div,还会有更多)

<div>
<li id="bCIya8DZyr4idseJe5cbLA" class="even">
<form action="url" method="post" accept-charset="utf-8">
<div class="space_name"></div>
<button name="more_data" type="button" class="meta_button">More Options</button>
<input type="submit" name="Submit" value="Submit">
<div class="meta" style="overflow: hidden; display: block;">
<div class="meta_block">Set Estimates:
<div class="input_estimate">1:
<input type="number" name="estimate_1" value="" id="estimate_1" class="estimate">
</div>
<div class="input_estimate">2:
<input type="number" name="estimate_2" value="" id="estimate_2" class="estimate">
</div>
<div class="input_estimate">3:
<input type="number" name="estimate_3" value="" id="estimate_3" class="estimate">
</div>
</div>
</div>
</form>
</li>
</div>

注意:我正在运行 jQuery 1.7.2

最佳答案

不要使用委托(delegate)

当您有多个事件监听器时,使用 @jrummell 建议的委托(delegate)(.on() 和选择器)会更快,因为您将监听器的数量减少为一个。

使用类的更简单的选择器

所以在这种情况下,我建议使用更简单的选择器:

$(function(){
$('.meta_button').on('click', function(){
$(this).siblings('div.meta').toggle('fast');
});
});

这样,当点击被触发时,您的选择器将变得非常简单,检查也将减少,因为没有委托(delegate)。也不会捕获对表单中其他元素的点击。

动画让事情变慢

动画可以减慢速度。同时在多个元素上执行的动画更是如此。

尝试移动单个父元素中的所有 div.meta 元素并仅在该单个元素上应用动画。

您也可以通过使用 toggle() 完全删除动画(在这种情况下关于多个项目的注释仍然有效)。

示例:

$(function(){
$('.meta_button').on('click', function(){
$(this).parent().find('.meta_holder').toggle();
// OR
// $(this).next('.meta_holder').toggle();
});
});

关于javascript - jQuery 选择器性能低下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15556776/

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