将jquery-multifile绑定到动态加载的表单

时间:2013-01-04 10:55:58

标签: javascript jquery dom multifile-uploader

我正在使用这里找到的jquery multifile插件:

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

我过去曾经使用它并没有任何问题,但现在我试图以动态加载的形式使用它,这会引起一个奇怪的问题。

我在按照本文加载表单时正确绑定了函数,所以请理解这是一个与此处发布的问题不同但虽然相关的问题:

Cannot bind input event to jQuery multifile from dynamically loaded form

$('#reportWindow').on('click', '#continueReport', function () {
    var data = $('.reportForm').serializeObject();
    $('<div/>').load('/Forms/report.aspx', data, function () {
        doReportForm(this);
    });
});

根据上述内容,正在使用jquery div将ASPX文件加载到load中,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那样,然后向下几行我绑定{{ 1}}插件因此MultiFile

第一次这样做,它工作正常。但是,当用户关闭模态窗口然后再次尝试加载表单时,我收到错误。

$(".multi").MultiFile();

(关闭模态窗口会使用Uncaught TypeError: Cannot call method 'apply' of undefined 将其从DOM中完全删除,因此以后的任何窗口都是完全从新编写的。

经过一番摆弄后,看来这是因为jQuery无法访问jQuery.remove()脚本...我认为

MultiFile脚本加载在父文档的头部,因此应始终可用。

0 个答案:

没有答案