javascript - 管理 JavaScript 数据

标签 javascript jquery ajax performance

我有一个网站,可以在登录时获取用户数据。 这个数据被mysql保存为一个字符串,用ajax调用这个字符串后,我通过js函数str.split()分割数据。 这将返回一个数组,其中包含我想要检查的 btns 的所有 id,并且通过“.each”调用我检查所有匹配的 btns。 最大的问题是这个过程在本地服务器上大约需要 10 秒。 有没有更好更快的方式获取用户数据? p.s:我们在用户登录时讨论了数百个 btns。

这是代码:

function get_saved_list(){
    $.ajax({
        type: "post",
        url: "ajax/get_saved_list.php",
        success: function(data){
            list=data.split(";");
            for(j=0; j<list.length-1; j++){
                $(".content #"+list[j]).siblings('a').trigger('click');
            }
            setTimeout("$('#save').hide()", 1);
        }
    });     
}

一些 html 包含被触发的“a”:

<ul class="content"><li>
<a class="third_cat_chb cat_chb_off"></a><span>page</span>
                                        <button id="page_<?php echo $row['page']."Z"; ?>chapter_<?php echo $row['s_id'];?>" style="width: 20px; margin-right: 5px;" class="page_chooser"></button></li></ul>

抱歉格式错误:)

最佳答案

不要在 ID 选择器前添加类前缀。这会禁止 jQuery 使用原生的 getElementById(),而是使用速度较慢的 getElementsByClassName()。

试试这个选择器:$("#"+list[j])

我能够循环浏览 1000 个项目并在大约 1 秒内触发一次点击,而不是先上一个类需要 4-5 秒。

如果您可以在实际的 <a> 上添加一个 ID,也会有所帮助。您想要单击的对象,这样就可以避免调用siblings(),这会增加额外的开销。

关于javascript - 管理 JavaScript 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10078324/

相关文章:

javascript - AngularJS 触发功能单击 anchor 链接

javascript - 按键 Action

php - 使用 AJAX 将数据记录到数据库

javascript - 将事件元素状态绑定(bind)到 jquery AJAX 请求

javascript - JSON stringify 后的 json_decode 无法正常工作

javascript - 我应该使用哪个库在 Node.JS 上进行服务器端图像处理?

javascript - Safari 5.1 和 Javascript confirm() 函数的错误

javascript - jQuery 更新文本字段不起作用

jquery - AJAX 请求更改表后如何触发 jQuery 中的函数?

javascript - 自动调用服务器端类,无需 <a href ="#"class...>