jQuery for循环导致意外结果

时间:2016-10-20 18:24:21

标签: wordpress

我正在构建海狸建造者模块,我的js给出了我从未得到过的错误。我正在运行一个for循环来运行我的代码2次,但是当我在同一页面上使用我的模块3次然后它加载我的jquery循环3 * 2次= 6我根本不想要... 。:(

任何人都可以指导我如何限制我的代码或我的循环只运行一次不是三次???这是我的整个jquery代码:

for (var i = 0; i < numItems; i++) {
            var attachFun = function(){
                if(jQuery('.masonaryOuter_v' +i+'').length){
                    var $container = jQuery('.masonaryOuter_v'+i+'');
                    $container.isotope({
                        filter: '*',
                        animationOptions: {
                            duration: 750,
                            easing: 'linear',
                            queue: false
                        }
                    });
                }

                if(jQuery('#filterlist_v'+i+' a').length){
                    jQuery('#filterlist_v'+i+' a').click(function(){
                        jQuery('#filterlist_v'+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;
                    }); 
                }
            }

        }

任何人都要引导我,因为我从未做过这种工作:(

1 个答案:

答案 0 :(得分:0)

如何设置全局变量以确定代码是否已经运行?

   if (window.alreadyrun == null) {
       for (var i = 0; i < numItems; i++) {
           var attachFun = function() {
               if (jQuery('.masonaryOuter_v' + i + '').length) {
                   var $container = jQuery('.masonaryOuter_v' + i + '');
                   $container.isotope({
                       filter: '*',
                       animationOptions: {
                           duration: 750,
                           easing: 'linear',
                           queue: false
                       }
                   });
               }

               if (jQuery('#filterlist_v' + i + ' a').length) {
                   jQuery('#filterlist_v' + i + ' a').click(function() {
                       jQuery('#filterlist_v' + 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;
                   });
               }
           }

       }
       window.alreadyrun = 1;
   }