Подтвердить что ты не робот

JQuery каждый обратный вызов

Как использовать обратные вызовы в jQuery для каждой функции?

Я пытаюсь что-то вроде:

$.each(images, function(key, value) { 
    new_images+= '<li><a href="'+value+'"><img src="'+value+'" alt="'+[key]+'" /></a></li>';
}, function (){
    $('#Gallery').remove();
    $('body').append('<ul class="gallery">'+new_images+'</ul>');
});
4b9b3361

Ответ 1

Что не так с этим кодом? Вам не нужен обратный вызов для $.each.

$.each(images, function(key, value) { 
    new_images+= '<li><a href="'+value+'"><img src="'+value+'" alt="'+[key]+'" /></a></li>';
});

$('#Gallery').remove();
$('body').append('<ul class="gallery">'+new_images+'</ul>');

Ответ 2

$.each(); - синхронная функция. Это означает, что вам не нужна функция обратного вызова внутри, потому что любой код, который вы пишете после $.each();, будет запущен с завершением $.each();.

Ответ 3

Вы имеете в виду это?

$.each(images, function(key, value) { 
    new_images+= '<li><a href="'+value+'"><img src="'+value+'" alt="'+[key]+'" /></a></li>';
});
function myMethod(){
    $('#Gallery').remove();
    $('body').append('<ul class="gallery">'+new_images+'</ul>');
};
myMethod();

Ответ 4

Не уверен в обратном вызове, который вы имели в виду. Я думаю, это то, что вы ищете

$('#Gallery').remove();
var selectItems='<ul class="gallery">';
$.each(images, function(key, value) { 
    selectItems+= '<li><a href="'+value+'">
                              <img src="'+value+'" alt="'+[key]+'" /></a></li>';    
});   
selectItems+= '</ul>';
$('body').append(selectItems);

Ответ 5

Теперь у меня есть решение для .each-callback!

Мне пришлось выполнить ajax-запрос для каждого элемента массива. Поэтому я создал div-контейнер со всеми элементами div для каждого элемента. Каждый раз, когда нагрузка была сделана, элемент div был изменен на зеленый и .slideUp, после .remove. И каждый раз я спрашивал, пустой ли контейнер-контейнер. Если да, я знаю, все элементы полностью загружаются (потому что удалены).

Вот часть моего кода:

<script>
$(document).ready( function() {
    $.each(myChannels, function(index, value) {
        $("#tag_"+value).load('getxmls/ajaxrenewchannel/channel:'+value, function() {
            $("#tag_"+value).removeClass('alert-info').addClass('alert-success');
            $("#tag_"+value).slideUp('600', function () {
                $("#tag_"+value).remove();
                if( $('#loadcontainer').is(':empty') ) {
                    window.location = 'feeds/';
                }

                });

        });
    });
});
</script>

Надеюсь, это поможет кому-то там...