将jquery-multifile绑定到动态加载的表单
我正在使用这里找到的jquery multifile插件:
http://www.fyneworks.com/jquery/multiple-file-upload/
我过去曾经使用它并没有任何问题,但现在我试图以动态加载的forms使用它,这引起了一个奇怪的问题。
我按照本文加载表单时正确绑定了函数,所以请理解这是一个与此处发布的问题不同但虽然相关的问题:
无法将输入事件从动态加载的表单绑定到jQuery多文件
$('#reportWindow').on('click', '#continueReport', function () { var data = $('.reportForm').serializeObject(); $('').load('/Forms/report.aspx', data, function () { doReportForm(this); }); });
按照上面的doReportForm
,使用jquery load
将ASPX文件加载到div
, doReportForm
函数将按照以下方式调用各种绑定方法来动态生成HTML:
function doReportForm(ele) { $(ele).makeModal('', 800); FB.XFBML.parse(); checkLogin(); clearNetIds($('#reportForm2')); $("#datePicker").datepicker({ changeMonth: true, changeYear: true }); $('[class*="toolTip"]').setupTip(); $(".multi").MultiFile(); // input[type=file] $('#right').on('click', '#savePost', function () { var data = $('.reportForm2').serializeObject(); }); };
第一行, $(ele).makeModal('', 800);
我只是一个用于创建模态窗口的jQuery扩展,因此它将元素添加到DOM中,然后向下几行我绑定MultiFile
插件,因此$(".multi").MultiFile();
第一次这样做,它工作正常。 但是,当用户关闭模态窗口然后再次尝试加载表单时,我收到错误。
Uncaught TypeError: Cannot call method 'apply' of undefined
(关闭模态窗口使用jQuery.remove()
将其从DOM中完全删除,因此任何未来的窗口都是完全从新鲜编写的)。
经过一番摆弄后,看来这是因为jQuery无法访问MultiFile
脚本…我认为
MultiFile
脚本加载在父文档的头部,因此应始终可用。