jquery中的延迟执行方法

$(".btn-download").click(function(){vars=jQuery("#grid").jqGrid('getGridParam','selar... $(".btn-download").click(function(){
var s = jQuery("#grid").jqGrid('getGridParam','selarrrow');
url=$(this).attr("action");
for(index in s){
location.href=url+"?id="+s[index];
}
});
----------------------------------------------------------
要完成的功能是点击下载,实现选中的一批文件的逐个下载,但实际中,选中3个只有最后一个会跳出下载窗口,调试发现是for循环执行过快导致,有什么办法可以保证当次href成功跳转后再执行下一次循环呢?
展开
 我来答
本逸春vL
推荐于2017-11-26 · TA获得超过1567个赞
知道小有建树答主
回答量:812
采纳率:0%
帮助的人:649万
展开全部

使用当前页面的location去做下载是不对的,你可以使用iframe。

$('.btn-download').click(function(){
    var s = jQuery('#grid').jqGrid('getGridParam','selarrrow');
    url = $(this).attr('action');
    $each(s, function(k, v){
        $('body').append('<iframe src="' + url + '?id=' + v + '" style="position:absolute;left:-1000px;top:-1000px;"></iframe>');
    });
});

使用隐藏的iframe去做下载,隐藏iframe最好使用绝对定位将它移出可视区域的方法,而不是简单的display:none,因为在某些浏览器下,display:none的iframe不会执行。

匿名用户
推荐于2018-02-27
展开全部
做一个控件时碰到的一些无法同步处理的事件,可以用这样的延迟方法;
参考如下:
<html>
<script src="js/jquery.js"></script>
<script>
$(function(){
$('#test').bind("click",function(){
setTimeout(function(){alert($('#test').val());},800);
});
$('#test').bind("blur",function(){
$('#test').val("已经赋值啦!");
});
})
</script>
<input type="text" id="test" size="12" value="">
</html>
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Baby_原來
2013-11-11 · TA获得超过3402个赞
知道大有可为答主
回答量:1535
采纳率:94%
帮助的人:493万
展开全部
可以用Ajax,当第一个下载完成时再次触发下载第二个,依次完成一个再去执行下一个,执行完结束。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式