JS的一个问题,清除标签的问题,
解决时间 2021-04-03 23:45
- 提问者网友:最美的风景
- 2021-04-03 07:00
不知道是我监听写的不对还是什么, 哎呀新手了,大家帮忙看下,感激不尽。
情况就是有一个输入框,我监听了它keyup的事件,每次执行获取不同的json值,然后输出,
我不想让每次获取的叠加在一块,就想一直显示固定条数。所以我每次执行的时候会先删除以前的。
一个一个的慢慢keyup触发事件是没问题的。问题是我如果连续快速输入值,这个remove的方法他就不管用了, 会罗列很多json获取的结果。
各位大大我该怎么解决。
或者说换更好的方法完成这个需要。
<script>
$('#search').keyup(function() {
$('#list li').remove()
$('#list').slideDown()
$.post("http://115.28.128.49/index.php?app=phone_shop&act=getgoods",
{
name:$(this).val(),
},
function(data,status){
var obj = eval ("(" + data + ")");
if(obj.total>0){
for(var i=0; i $("#list").prepend("店铺名称:"+obj.stores[i].store_name+"
")
}
}
});
});
</script>
最佳答案
- 五星知识达人网友:低音帝王
- 2021-04-03 07:53
应该把remove放到post的回调函数里。
就是得到结果之后再清空。
或者
停止上一次的请求,重新发送请求。
全部回答
1.remove应该在post的回调里。
2.计时,当连续两次的keyup事件间隔不足1秒时不发送请求。
$('#search').keyup(function(){
//your code
修改为
var lastType;
$('#search').keyup(function(){
var thisType = +new Date();
if( lastType && thisType - lastType < 1000 ){
lastType = thisType;
return;
}
lastType = thisType;
//your code
我要举报
大家都在看
推荐资讯