需要解决:未捕获的TypeError:无法调用未定义的方法'each'

时间:2014-01-15 01:16:05

标签: javascript jquery

我从themeforest购买了一个模板,在我删除了三个打开的​​滑块中的两个之后,我发现了一个“未捕获的TypeError:无法调用方法”每个'undefined'。该错误会将页面加载时间降低到爬行速度,但整个站点仍可正常运行。 'each'是否引用3个原始滑块,如果可以,我可以编辑它以引用1个单独的滑块吗?

function init_main_slider(target) {
set_height();

jQuery(target).flexslider({
    animation : 'fade',
    controlNav : true,
    directionNav : true,
    animationLoop : true,
    slideshow : false,
    animationSpeed : 500,
    useCSS : true,
    start : function(slider) {
        if(!isMobile) {
            slider.slides.each(function(s) {
                jQuery(this).find('.animated_item').each(function(n) {
                    jQuery(this).addClass('animate_item' + n);
                });
            });
            slider.slides.eq(slider.currentSlide).find('.animated_item').each(function(n) {
                var show_animation = jQuery(this).attr('data-animation');
                jQuery(this).addClass(show_animation);
            });
        }
        else {
            slider.find('.counter').find('.num').each(function() {
                var container = jQuery(this);
                var num = container.attr('data-num');
                var content = container.attr('data-content');

                count_num(num, content, container, false);
            });
        }
    },
    before : function(slider) {
        if(!isMobile) {
            slider.slides.eq(slider.currentSlide).find('.animated_item').each(function(n) {
                var show_animation = jQuery(this).attr('data-animation');
                jQuery(this).removeClass(show_animation);
            });
            slider.slides.find('.animated_item').hide();

            var counter_block = slider.slides.eq(slider.currentSlide).find('.counter');
            if(counter_block.length > 0) {
                setTimeout(function() {
                    counter_block.find('.num').each(function() {
                        jQuery(this).html('0');
                    });
                }, 300);
            }
        }
    },
    after : function(slider) {
        if(!isMobile) {
            slider.slides.find('.animated_item').show();

            slider.slides.eq(slider.currentSlide).find('.animated_item').each(function(n) {
                var show_animation = jQuery(this).attr('data-animation');
                jQuery(this).addClass(show_animation);
            });

            var counter_block = slider.slides.eq(slider.currentSlide).find('.counter');
            if(counter_block.length > 0) {
                counter_block.find('.num').each(function() {
                    var container = jQuery(this);
                    var num = container.attr('data-num');
                    var content = container.attr('data-content');

                    count_num(num, content, container, 1500);
                });
            }
        }
    }
});

function set_height() {
    var w_height = jQuery(window).height();
    jQuery(target).height(w_height).find('.slides > li').height(w_height);
}

jQuery(window).resize(function() {
    set_height();
});
}

1 个答案:

答案 0 :(得分:0)

你是如何“删除滑块”的?我在html中注意到幻灯片仍有一类<li class="slide_3">,这可能会导致插件出现问题。删除或更改为幻灯片或幻灯片1会有所不同吗?如果你不能让它合作,一个想法就是当只有一个图像时真的不需要这个滑块,所以你可以计算<li>的数量,只有当有多个图像时才使用该功能,否则插入单个图像...类似于。

jQuery(function() {
  // count the list
  var listSize = $(".slides li").size();
  if (listSize < 2) { 
    $('#main_slider').prepend('<img src="images/pic_slider_1_3.png" alt="">')
  } else {
    init_main_slider('#main_slider');
  }
});