-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

私がそれを行う唯一の方法は、カスタムイベントを実装し、それを「オン」でキャッチすることです。

イベントを「my.uploadify.event」にします

ページの読み込み後、イベントをトリガーして初期化します。

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

これにより、ページの読み込み時にイベントがトリガーされます。次のステップは、ajax データがロードされた後にイベントを発生させることです。ajax コールバックで上記のステートメントを再度使用します。これが何をするかというと、以前にオンに設定されたものがそれをキャッチするように、イベントを発生させます。

この「on」ブロック内に「each」スニペットをラップし、

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

あなたが正確に何を望んでいるかはわかりませんが、これは私の考えです。今度は、イベントがトリガーされるたびに、uploadify が再初期化されます。

于 2013-10-28T07:45:20.407 に答える