簡體   English   中英

如何優化jquery腳本以提高性能?

[英]How can I optimize the jquery script to improve performance?

我有這個JQuery腳本,它正在查看一些DIV,並獲取圖像大小並根據圖像設置div大小。

我有一個JQuery腳本來獲取所有DIV並循環到每個圖像,並獲取大小並根據正確的大小設置DIV大小。 問題是該腳本運行異常,僅在刷新(F5)頁面時才起作用。 現在,如果我更改為首先獲取所有圖像並循環獲取大小,則可以正常工作。 第二個選項的唯一問題是我不知道哪些圖像屬於哪些DIV,因此我不得不添加一個額外的循環以從正確的DIV獲取所有圖像。

這是我的代碼:

$('.groupContainer').imagesLoaded(function($images){
        $(this).each(function(){
            var rowWidth = 16;
            $(this).imagesLoaded(function($images){
                $images.filter(':not(".overlayBoxImage")').each(function(){
                    if($(this).context.id != 'groupTitle'){
                        $(this).parent().parent().parent().css('width', $(this).width());
                    }
                    rowWidth += $(this).width();
                });
                if(rowWidth > maxWidth){
                    maxWidth = rowWidth;
                    $('.vnBreadcrumbsCont').css({width: maxWidth, 'max-width':maxWidth});
                    $('.guideDescCont').css({width: maxWidth, 'max-width':maxWidth});
                    $('#headerContainer').css({width: maxWidth});
                    $('.groupContainer').css({width: maxWidth,'max-width': maxWidth});
                    $('#guideContainer').css({width: maxWidth, 'max-width': maxWidth});
                }
            });
        });
    });

我需要一些幫助,以查看是否可以優化LOOP。 因為當前我要循環獲取圖像(不對其進行任何操作),然后再次循環以獲取所有DIV,然后再次循環以獲取所有圖像並進行計算。

這是我以前使用過的腳本,但是由於我先加載DIV並循環播放圖像,因此無法正常工作。

$('.groupContainer').each(function(){
        var rowWidth = 16;
        $(this).imagesLoaded(function($images){
            $images.filter(':not(".overlayBoxImage")').each(function(){
                if($(this).context.id != 'groupTitle'){
                    $(this).parent().parent().parent().css('width', $(this).width());
                }
                rowWidth += $(this).width();
            });

            if(rowWidth > maxWidth){
                maxWidth = rowWidth;
                $('.vnBreadcrumbsCont').css({width: maxWidth, 'max-width':maxWidth});
                $('.guideDescCont').css({width: maxWidth, 'max-width':maxWidth});
                $('#headerContainer').css({width: maxWidth});
                $('.groupContainer').css({width: maxWidth,'max-width': maxWidth});
                $('#guideContainer').css({width: maxWidth, 'max-width': maxWidth});
            }
        });
    });

這部分不會增加性能,但看起來會更短和更好:)

        if(rowWidth > maxWidth){
            maxWidth = rowWidth;
            $('.vnBreadcrumbsCont').css({width: maxWidth, 'max-width':maxWidth});
            $('.guideDescCont').css({width: maxWidth, 'max-width':maxWidth});
            $('#headerContainer').css({width: maxWidth});
            $('.groupContainer').css({width: maxWidth,'max-width': maxWidth});
            $('#guideContainer').css({width: maxWidth, 'max-width': maxWidth});
        }

        if(rowWidth > maxWidth){
            maxWidth = rowWidth;
            var selector = '.vnBreadcrumbsCont, .guideDescCont, .groupContainer, #guideContainer'
            $(selector).css({width: maxWidth, 'max-width':maxWidth});
            $('#headerContainer').css({width: maxWidth});
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM