我正在使用此处找到的 jquery 多文件插件:
http://www.fyneworks.com/jquery/multiple-file-upload/
我过去使用过它并且没有任何问题,但现在我试图以动态加载的形式使用它,这导致了一个奇怪的问题。
根据本文加载表单时,我正确绑定了该功能,因此请理解这是与此处发布的问题不同但相关的问题:
$('#reportWindow').on('click', '#continueReport', function () {
var data = $('.reportForm').serializeObject();
$('<div/>').load('/Forms/report.aspx', data, function () {
doReportForm(this);
});
});
一个 ASPX 文件被加载到div
使用 jqueryload
中,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
(关闭模态窗口会将其从 DOM 中完全删除jQuery.remove()
,因此任何未来的窗口都是完全从新编写的)。
经过一番摆弄,这似乎是由于 jQuery 无法访问MultiFile
脚本......我想
该MultiFile
脚本加载在父文档的头部,因此应该始终可用。