jquery щелчок внутри цикла «каждый» вызывает переключение в цикл

0

Код находится ниже... когда щелчок происходит,.slideToggle только циклы, а div скользит вверх и вниз бесконечно...

$(document).ready(function() {
     $.getJSON('/test/getsubtopics2.php', function(data) {
        $.each(data.topics, function(name,value) {
            $(".forum-topics").append('<div class="forum-topic-head"><div class="forum-topic-row"><div class="expand">+</div><div class="forum-title">' + value.topic_name + '</div></div><div class="subtopic-frame" id="' + value.topic_id + '"></div>');

            $.each(value.subtopic_array, function(name2,value2) {
                $("#" + value.topic_id).append('<div class="subtopic-name"><a href="/forums/topic.php?id=' + value2.subtopic_id + '">' + value2.subtopic_name + '</a></div><div class="num-threads"></div>');
                $(".forum-topic-row").click(function(){
                    $(this).siblings(".subtopic-frame").slideToggle("slow");
                    $(this).children(".expand").delay("100").fadeToggle();
                });
            });
        });
        console.log(data);
     });
});
Теги:

1 ответ

3
Лучший ответ

Не регистрируйте обработчик кликов в цикле, зарегистрируйте его вне цикла с помощью делегирования событий

$(document).ready(function () {
    $.getJSON('/test/getsubtopics2.php', function (data) {
        $.each(data.topics, function (name, value) {
            $(".forum-topics").append('<div class="forum-topic-head"><div class="forum-topic-row"><div class="expand">+</div><div class="forum-title">' + value.topic_name + '</div></div><div class="subtopic-frame" id="' + value.topic_id + '"></div>');

            $.each(value.subtopic_array, function (name2, value2) {
                $("#" + value.topic_id).append('<div class="subtopic-name"><a href="/forums/topic.php?id=' + value2.subtopic_id + '">' + value2.subtopic_name + '</a></div><div class="num-threads"></div>');
            });
        });
        console.log(data);
    });

    $(".forum-topics").on('click', ".forum-topic-row", function () {
        $(this).siblings(".subtopic-frame").slideToggle("slow");
        $(this).children(".expand").delay("100").fadeToggle();
    });

});
  • 0
    сделал это спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню