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();
答案 0 :(得分:1)
我认为这样做的唯一方法是实现一个自定义事件,然后用'on'来捕获它。
让事件成为'my.uploadify.event'
页面加载后触发事件以初始化它,
$('.bulkupload').trigger('my.uploadify.event');
这将导致事件在页面加载时触发。下一步是在加载ajax数据后触发事件。再次在ajax回调中使用上面的语句。现在它的作用是,它将触发一个事件,以便之前设置的捕获它。
现在将“每个”代码段包装在此“开启”块中,
$('.bulkupload').on('my.uploadify.event', function(){
$(this).each(function() {
// Process
});
});
我不确定你想要什么,这是我的想法。现在,每次事件触发后都会重新初始化uploadify。