-1

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();
4

1 回答 1

1

我看到的唯一方法是实现一个自定义事件,并用“on”捕获它。

让事件成为“my.uploadify.event”

页面加载后触发事件对其进行初始化,

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

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

现在将您的“每个”片段包装在这个“打开”块中,

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

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

于 2013-10-28T07:45:20.407 回答