1

我正在使用此处找到的 jquery 多文件插件:

http://www.fyneworks.com/jquery/multiple-file-upload/

我过去使用过它并且没有任何问题,但现在我试图以动态加载的形式使用它,这导致了一个奇怪的问题。

根据本文加载表单时,我正确绑定了该功能,因此请理解这是与此处发布的问题不同但相关的问题:

无法从动态加载的表单将输入事件绑定到 jQuery 多文件

$('#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脚本加载在父文档的头部,因此应该始终可用。

4

0 回答 0