Ширина всех содержащихся элементов + ширина последнего элемента - PullRequest
1 голос
/ 10 февраля 2011

Мне нужен контейнер div, чтобы быть объединенной шириной всех его изображений плюс ширина последнего изображения.Я получил ширину объединенных изображений следующим образом:

$(window).load(function() {
    $('.pressimage').each(function() {
        var totalImageWidth = 0;

        $("img", this).each(function () {
            totalImageWidth += $(this).width();
        });

        $(this).width(totalImageWidth);
    });
});

Так как же теперь добавить ширину последнего изображения?Я пробовал это, но это не работает:

$(window).load(function() {
    $('.pressimage').each(function() {
        var totalImageWidth = 0;

        $("img", this).each(function () {
            totalImageWidth += $(this).width();
        });


        $("img", this).last(function () {
            lastImageWidth = $(this).width();
        });

        $(this).width(totalImageWidth + lastImageWidth);
    });
});

Спасибо

ОБНОВЛЕНИЕ.Извините, я работал над неправильным кодом.Вот что у меня есть, что делает div шириной всех его изображений:

$(window).load(function() {

    var pub_accum_width = 0;

    $('.view-public-collection .pubimagecolor').find('img').each(function() {
        pub_accum_width += $(this).width();
    });
    //alert(pub_accum_width);

        $('.view-public-collection .view-content').width(pub_accum_width);

}); 

А вот мой модифицированный код, но он не сделал div более широким:

$(window).load(function() {


    var pub_accum_width = 0;
    var pub_accum_last = 0;

    $('.view-public-collection .pubimagecolor').find('img').each(function() {
            pub_accum_width += $(this).width();
    });


    $('.view-public-collection .pubimagecolor').find('img').last(function() {
        pub_last_width += $(this).width();
    });


    $('.view-public-collection .view-content').width(pub_accum_width + pub_last_width);


});

Спасибо

1 Ответ

3 голосов
/ 10 февраля 2011

ОТВЕТ НА ОБНОВЛЕННЫЙ ВОПРОС:

$(window).load(function() {
    var pub_accum_width = 0;
    var pub_last_width = 0; // not pub_accum_last

    $('.view-public-collection .pubimagecolor').find('img').each(function() {
        pub_accum_width += $(this).width();
    });

    //                                                   ...last(function(...
    $('.view-public-collection .pubimagecolor').find('img').last().each(function() {
        pub_last_width += $(this).width();
    });

    $('.view-public-collection .view-content').width(pub_accum_width + pub_last_width);
});

last() - это отдельная функция обхода, к ней нельзя добавить параметр обратного вызова. Выберите последний элемент с ним, затем используйте each(). Также вы используете разные имена переменных.


Вы должны определить переменную lastImageWidth за пределами last() обратного вызова each() обратного вызова после last(), чтобы иметь возможность снова использовать ее снаружи.

// ...
var totalImageWidth = 0;
var lastImageWidth = 0;
// ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...