ajax调用后重新初始化uploadify

时间:2013-10-25 07:08:18

标签: jquery ajax jquery-ui uploadify

uploadify最初工作正常。但是当我使用ajax调用重新填充表时,uploadify不会初始化。类似地,jquery-ui的.sortable也没有在同一个调用之后被初始化。

var allimages = [];

$('.bulkupload').each(function() {
        var $bulkupload = $(this);
        $bulkupload.uploadify({
            'swf'      : 'uploadify.swf',
            'uploader' : 'bulkupload.php',
            'auto'      : true,
            'multi'     : true,
            'buttonText':   'Upload Images',
            'onUploadSuccess' : function(file, data, response) {
                if (data == "1") {
                    var filename = file.name;
                    if ($.inArray(filename, allimages) > -1) {
                        var fi = $.inArray(filename, allimages);
                        allimages.splice(fi, 1);
                    }
                    else {
                        allimages.push(filename);
                    }
                    var productid = $bulkupload.attr("prodid");
                    var sortablename = "#sortable-"+productid;
                    $(sortablename).append("<li filename=\""+filename+"\" style=\"list-style: none;\" class=\"ui-state-default\"><div class=galleryimages><img src=\"products/"+productid+"/"+filename+"\" width=100 border=0><span class=deleteimageicon filename=\""+filename+"\"><img src=\"images/delete.png\" border=0></span></div></li>");
                }
            }
        });
});
$(".sortable").sortable({
    update: function(event, ui) {
        var pid = $(this).attr("pid");
        var images = $(this).sortable('toArray', {attribute: 'filename'});
        var dataString = "images="+images+"&pid="+pid+"&action=bulkimageorder";
        $.ajax({
            type: "POST",
            url: "filename.php",
            data: dataString,
            cache: false,
            success: function(html) {
            }
        });
    }
});
$(".sortable").disableSelection();

1 个答案:

答案 0 :(得分:1)

我认为这样做的唯一方法是实现一个自定义事件,然后用'on'来捕获它。

让事件成为'my.uploadify.event'

页面加载后触发事件以初始化它,

$('.bulkupload').trigger('my.uploadify.event');

这将导致事件在页面加载时触发。下一步是在加载ajax数据后触发事件。再次在ajax回调中使用上面的语句。现在它的作用是,它将触发一个事件,以便之前设置的捕获它。

现在将“每个”代码段包装在此“开启”块中,

$('.bulkupload').on('my.uploadify.event', function(){
    $(this).each(function() {
        // Process
    });
});

我不确定你想要什么,这是我的想法。现在,每次事件触发后都会重新初始化uploadify。