我有一个网站,可以在登录时获取用户数据。 这个数据被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/