所以我有以下
<form id="uploadControls">
<input type="file" id="browseFiles">
<input type="button" id="startUpload" value="Upload">
<input type="checkbox" id="overwrite">
</form>
一些javascript用来控制文件上传机制。后端工作得非常好。我使用resumable.js(https://github.com/23/resumable.js),这是我上传控件的一小部分示例片段
var resume;
function resumableUpload(){
resume = new Resumable({
url: uploadURL,
query: {overwrite: !!($("#overwrite").attr('checked'))},
size: 1024*1024
});
// some events with callback functions
resume.assignBrowse(document.getElementById("browseFiles"));
}
$("#startUpload").live("click",function(){
resume.upload();
});
现在,如果有人要勾选复选框以允许文件覆盖以前存在的文件(保存没有时间戳),我需要更新可恢复对象中的query
参数,这是我唯一的方式能够做到这一点是重新加载resumableUpload()
。问题是,当通过以下方式进行调用时:
$("#overwrite").on('click',resumableUpload);
然后所有onclick
处理程序都停止响应。
我尝试了以下内容:
$("#overwrite").on('click',function(){
$("#uploadControls").each(function(){
this.reset();
});
startResumable();
});
但这似乎不起作用。
我做得不好?使用resumable.js库将文件拣取程序绑定到<button>
但这在Firefox上不起作用,这很好用,所以我需要一个更好的解决方案。
答案 0 :(得分:0)
尝试使用委托:
$("#uploadControls").on('click','#overwrite',function(){...});
顺便说一句:
$("#startUpload").live("click",function(){...});
应该是:
$(document).live("click","#startUpload",function(){...});
不推荐使用LIVE :
从jQuery 1.7开始,不推荐使用.live()方法。使用.on()来 附加事件处理程序。旧版jQuery的用户应该使用 .delegate()优先于.live()。