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成功跳转后再执行下一次循环呢? 展开
var s = jQuery("#grid").jqGrid('getGridParam','selarrrow');
url=$(this).attr("action");
for(index in s){
location.href=url+"?id="+s[index];
}
});
----------------------------------------------------------
要完成的功能是点击下载,实现选中的一批文件的逐个下载,但实际中,选中3个只有最后一个会跳出下载窗口,调试发现是for循环执行过快导致,有什么办法可以保证当次href成功跳转后再执行下一次循环呢? 展开
3个回答
展开全部
使用当前页面的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>
参考如下:
<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>
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以用Ajax,当第一个下载完成时再次触发下载第二个,依次完成一个再去执行下一个,执行完结束。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询