jQuery для цикла работает не так, как ожидалось

#jquery

#jquery

Вопрос:

Я работаю над плагином и в настоящее время хочу обеспечить динамическое поведение моей галереи isotope. Проблема странная, поскольку весь код в порядке, но не работает. Это работает только для одной последней галереи, пока я хочу, чтобы каждая галерея работала нормально.

Сценарий такой: на одной странице может быть несколько галерей, и я просто добавляю цифру к каждой галерее, чтобы присвоить ей уникальный идентификатор, а затем я также могу обновить свой jquery.

Вот мой код jQuery.

 var count = jQuery('div[filter-id="filter-count"]').length;
alert(count);
for (var i = 0; i < count; i  ) {
    alert(i);
    if (jQuery('#gallery-listed'  i  '').length) {
            var $container = jQuery('#gallery-listed'  i  '');
            $container.imagesLoaded( function(){
                $container.isotope({
                    filter: '*',
                    animationOptions: {
                        duration: 750,
                        easing: 'linear',
                        queue: false
                    }
                });
            });
            jQuery('#filterlist_v5'  i  ' a').click(function() {
                jQuery('#filterlist_v5'  i  ' .current').removeClass('current');
                jQuery(this).addClass('current');

                var selector = jQuery(this).attr('data-filter');
                $container.isotope({
                    filter: selector,
                    animationOptions: {
                        duration: 750,
                        easing: 'linear',
                        queue: false
                    }
                });
                return false;
            });
        }
}
  

Я подсчитываю свои данные attr, чтобы убедиться, сколько там галерей, а затем также выполняю цикл. Html-код выглядит нормально, и то же самое относится к jquery, хотя я чувствую, что jquery не печатает этот код, поскольку он показывает тот же код в моем скрипте, как только я проверяю скрипты нижнего колонтитула. Надеюсь, я смогу помочь вам понять мою проблему.

Комментарии:

1. Было бы полезно, если бы вы предоставили свой html, а также указали, какая консоль браузера или предупреждение отображаются при запуске выше.

2. хорошо, позвольте мне также добавить свой html

3. html такой же, как код jquery … он также отлично предупреждает обо всем… но как только я нажимаю на кнопку фильтра первой галереи, она перетасовывает фильтры последней галереи, в то время как я хочу, чтобы она работала сама по себе: (

4. этот код отлично работает в моем php-файле… но я хочу, чтобы это работало из моего файла scripts, потому что это более профессиональный подход… но в чем проблема с папкой scripts во время ее работы в файле php???

Ответ №1:

Вместо этого вы можете добавить класс в свой код и использовать каждую функцию jQuery, как показано ниже:

Примечание: предположим, что имя вашего класса «testing», тогда код будет выглядеть так, как показано ниже:

 $(".testing").each(function(){
var i = 0;
if (jQuery('#gallery-listed'  i  '').length) {
        var $container = jQuery('#gallery-listed'  i  '');
        $container.imagesLoaded( function(){
            $container.isotope({
                filter: '*',
                animationOptions: {
                    duration: 750,
                    easing: 'linear',
                    queue: false
                }
            });
        });
        jQuery('#filterlist_v5'  i  ' a').click(function() {
            jQuery('#filterlist_v5'  i  ' .current').removeClass('current');
            jQuery(this).addClass('current');

            var selector = jQuery(this).attr('data-filter');
            $container.isotope({
                filter: selector,
                animationOptions: {
                    duration: 750,
                    easing: 'linear',
                    queue: false
                }
            });
            return false;
        });
    } 
i = i   1;
});
  

Надеюсь, у вас сейчас все работает нормально: просто сосредоточьтесь на этих двух строках ниже:

 var i = 0;
  

и

 i = i  1;
  

который устанавливает i в 0 и увеличивает значение is на 1 после каждой итерации. Итак, это будет выполняться, давайте предположим, что у вас есть 5 классов тестирования, затем 5 раз, и вы получите свои результаты.

Комментарии:

1. да, я понял вашу точку зрения, и сейчас я использую ту же технику, на моем конце она работает нормально … большое спасибо за ваше время