2013-10-25 2 views
-1

Uploadify работает нормально. Но когда я повторяю таблицу, используя ajax-вызов, uploadize не инициализирует. И аналогичным образом .sortable jquery-ui не инициализируется ни после того же вызова.Reinitialize uploadify после ajax call

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

Можете ли вы проверить свою консоль firebug и посмотреть, есть ли у вас какие-либо ошибки. –

+0

проблема заключается в том, что он не будет инициализирован, потому что элемент, на котором он применяется, перезагружается через ajax. Поэтому это нужно переинициализировать, что обычно делается с помощью jquery .on. Но, к сожалению, я не знаю, как использовать их здесь. –

+0

Используете ли вы метод jquery 'on' с селектором, чтобы он делегировал событие. У меня была такая же проблема с 'on' для моего содержимого ajax, но после вставки селектора она работала нормально после загрузки данных ajax. –

ответ

1

Единственный способ, которым я вижу это, - это реализовать пользовательское событие и перехватить его с помощью «вкл».

Пусть событие будет, «my.uploadify.event»

После загрузки страницы вызвать событие для его инициализации,

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

Это вызовет событие для запуска на странице загрузки. Следующий шаг - запустить событие после загрузки данных ajax. Используйте вышеуказанный оператор в своем обратном вызове ajax еще раз. Теперь, что это делает, он будет запускать событие, чтобы ранее установленное значение ловило его.

Теперь обернуть «каждый» фрагмент кода в пределах этого «на» блоке,

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

Я не уверен, что вы хотите точно, это моя идея. Теперь uploadify получает повторную инициализацию после каждого триггера события.

+0

Не работает. Как вы сказали, я добавил .trigger в код, который загружается через .ajax. А затем изменил функцию .each, добавив .on before, как вы предлагали. Но все же функция uploadize не инициализировалась. –

+0

Извините, приятель, просто попробуйте это. Замените $ ('. Bulkupload') в функции «trigger» и «on» и попробуйте $ (document). Но для каждого используйте один и тот же $ ('. Bulkupload'). Each() –

+0

Nope не работает. Использовали следующие \t $ ('документ'). На ('my.uploadify.event', функция() { \t $ ('bulkupload'). Каждая (функция() { –

Смежные вопросы