jQuery for循环不能按预期工作

时间:2016-10-20 12:29:52

标签: jquery

我正在开发一个插件,目前想为我的同位素库提供动态行为。问题很奇怪,因为代码很好但不起作用。它适用于最后一个画廊,而我希望每个画廊都能正常工作。

场景就像是,同一页面上可以有多个图库,我只是在每个图库中添加一个数字来分配一个唯一的ID,然后我也可以更新我的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 个答案:

答案 0 :(得分:0)

相反,您可以在代码中添加一个类,并可以使用jQuery的每个函数,如下所示:

注意:假设您的班级名称是&#34;测试&#34;然后代码如下所示:

$(".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,每次迭代后增量值为1。所以这将会运行,假如你有5个类别的测试然后5次,你就会得到你的结果。