0

私はjqueryとjavascriptの初心者です。イメージ ソースと img ソースの配列の 2 つのパラメータを取得する関数に大きな問題があります。

function loadPicture(pic_src, _getarray)
{
    var picture_index = _getarray.indexOf(pic_src);
    var array_last = _getarray.length - 1;

    var big_source = pic_src;                       
    var big_source = 'pictures/' + big_source.substring(big_source.search("thumbs/th_")+10);

    var wwidth = $(window).width();
    var wheight = $(window).height();

    $("body").css({ 'overflow' : 'hidden' });

    $("#pic_loader img.single_picture").remove();
    $("#pic_loader").css({ 
                    'width' : wwidth,
                    'height' : wheight      
                    });

    $("#pic_loader").fadeIn();
    $("#pic_loader").append('<img data-original="'+big_source+'" alt="" class="single_picture" />');

    $("img.single_picture").css({ 
        'max-height' : wheight - 120 + 'px',
        'max-width' : wwidth - 120 + 'px',
        'margin-top' : parseInt(wheight/16) + 'px'
    });

    $("img.single_picture").lazyload({
        effect : "fadeIn",
        skip_invisible : false,
        load : function() 
            {
                $("#pic_loader").css({ 'background' : '#000' });
            }
    });

    $("#next_pic").click( function()
    {
        if(picture_index == array_last)
        {
            loadPicture(_getarray[0],_getarray);
            return false;
        }
        else
        {
            loadPicture(_getarray[picture_index+1],_getarray);
            return false;
        }
    } );

    $("#prev_pic").click( function()
    {
        if(picture_index == 0)
        {
            loadPicture(_getarray[array_last],_getarray);
            return false;
        }
        else
        {
            loadPicture(_getarray[picture_index-1],_getarray);
            return false;
        }
    } );
} 

ユーザーが prev_pic または next_pic リンクをクリックすると問題が発生し、ビューアー ( ) に画像が正しく読み込まれますが、再帰が発生するたび#pic_loaderに倍増scrollしてイベントが発生し、ブラウザーが劇的に遅くなります。resizeこれを処理する方法がわかりません。

「イベントスクリーンショット」

4

1 に答える 1

0

「スクロール」と「サイズ変更」がどこから来ているのかわかりませんが、loadPicture の先頭にクリアを追加してみてください:

function loadPicture(pic_src, _getarray)
{
    resize = [];
    scroll = [];
于 2012-11-10T01:30:56.133 に答える