gpt4 book ai didi

javascript - 慢速 JQuery 函数

转载 作者:行者123 更新时间:2023-12-02 19:30:19 26 4
gpt4 key购买 nike

我在 JQuery 和 JS 中有这样的函数。我有一个带有复选框的 div 列表,并将它们添加到我的列表中。这对于 40 个 div 来说效果很好,但有时我有 2,000 个 div,它会导致 Chrome 崩溃并在 FF 上爬行。无论如何要让它更快吗?

function AddToList()
{
$('div[name="notadded"] input:checked').each(function(index)
{
var html = $(this).parents('div[name="notadded"]').html();

//get rid of the class that is used to gather checkboxes in select/deselect
html = html.replace('listvars', 'addedvars');

var var_id = $(this).attr('value');

var new_html = '<div id="added_' + var_id + '" name="added">' + html + '</div>';

//hide the one we are adding and remove the check
$(this).parents('div[name="notadded"]').hide();
$('div[name="notadded"] input[value="' + var_id + '"]').attr('checked', false);

//add the vars to the added list
$('.addedList').append(new_html);

step3 = '3b';
});
}

最佳答案

您正在执行 2000 次 DOM 操作,这不是一个好方法。尝试进行 2,000 次字符串操作和一次 DOM 插入。

function AddToList()
{
var new_html = "";

$('div[name="notadded"] input:checked').each(function(index)
{
var html = $(this).parents('div[name="notadded"]').html();

//get rid of the class that is used to gather checkboxes in select/deselect
html = html.replace('listvars', 'addedvars');

var var_id = $(this).attr('value');

var new_html += '<div id="added_' + var_id + '" name="added">' + html + '</div>';

//hide the one we are adding and remove the check
$(this).parents('div[name="notadded"]').hide();
$('div[name="notadded"] input[value="' + var_id + '"]').attr('checked', false);

//add the vars to the added list
step3 = '3b';
});

$('.addedList').append(new_html);
}

此外,根据经验,取消选中 2,000 个复选框会严重影响性能。我打赌把这一行去掉:

$('div[name="notadded"] input[value="' + var_id + '"]').attr('checked', false);

将会改变一切。我建议将此函数重写为字符串替换,这样会快得多。

关于javascript - 慢速 JQuery 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11568319/

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