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 に答える