为什么我得到无限循环?

时间:2012-08-30 07:27:01

标签: jquery

我正在尝试调整容器的大小并设置宽度和高度。它不是代码的全部,但是我调用了无限循环 $。fn.imageScale.resizeContainer 功能,我找不到原因?

$( window ).load(function(){    
    $( '#scalable_images' ).imageScale();
});

(function($){
$.fn.imageScale = function(){

    thisCallback = $( this ); // for usage in inner other function
    images = $( this ).find( 'img' ); // images
    imagesHolder = $( this ).find( '.item' ); // image holder
    frameSize = 34; // frame size
    sizingCof = 1.5; // image size cofficient to scale, 1.5 = 150% normal state
    speed = 600; // speed in ms

    $.fn.imageScale.resizeContainer();
    $.fn.imageScale.resize();
    OldContainerW = imagesHolder.width();
    OldOffsetL = offsetL;

    $( window ).bind( 'resize', function(){
        $.fn.imageScale.resizeContainer();
        $.fn.imageScale.resize();
        OldContainerW = imagesHolder.width();
        OldOffsetL = offsetL;
    });
}

$.fn.imageScale.resizeContainer = function(){

    var windowW = $( window ).width();
    var windowH = $( window ).height();
    var scaleImgH = windowH - frameSize * 2;
    var scaleImgW = windowW - frameSize * 2;

    $( this ).height( scaleImgH );
    $( this ).width( scaleImgW );
}
})(jQuery);

2 个答案:

答案 0 :(得分:4)

因为你将resizeContainer函数绑定到resize事件,并且在resizeContainer函数中调整容器大小,再次触发resize事件,再次执行resizeContainer,无限期

答案 1 :(得分:1)

如果您已经创建了一个触发resize事件的函数,那么为什么要在函数

中绑定它

如果调用$('#cache_images')。imageScale();表示调整大小,然后用下面的代码替换下面的代码

 $( window ).bind( 'resize', function(){

        $.fn.imageScale.resizeContainer();
        $.fn.imageScale.resize();
            OldContainerW = imagesHolder.width();
        OldOffsetL = offsetL;
    });

并将其替换为

  $.fn.imageScale.resizeContainer();
    OldContainerW = imagesHolder.width();
    OldOffsetL = offsetL;