0

我正在尝试调整容器的大小并为其设置宽度和高度。这不是代码的全部部分,但出现无限循环然后我调用 $.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);
4

2 回答 2

4

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

于 2012-08-30T07:28:56.267 回答
1

如果您已经创建了一个函数来触发调整大小事件,那么为什么要将它绑定到函数中

如果调用 $( '#scalable_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;
于 2012-08-30T07:52:54.640 回答