$(window).resize() не запускает функцию

Я написал функцию, которая должна запускаться при первой загрузке страницы и когда пользователь изменяет размер окна. Он отлично работает, когда загружается страница, но не работает, когда пользователь изменяет размер окна. Что странно, так это то, что если я помещу предупреждение внутри функции, это предупреждение появится, когда размер окна изменится, но остальная часть функции не сработает. Я не вижу никаких ошибок в консоли Chrome. Я пытался изменить его на $(document).resize(), $("body").resize() и $(".pricingHeader").resize(), и ничего не получилось. Это не имеет смысла для меня.

function getTallest() {
    var tallest = 0;
    $(".pricingHeader").not(".features .pricingHeader").each(function(){
       tallest = $(this).height() > tallest?$(this).height():tallest;
    });
    $(".pricingHeader").not(".features .pricingHeader").height(tallest);
    $(".features .pricingHeader").height(tallest + 8);
}
$(document).ready(function() {
    getTallest();
});
$(window).resize(function() {
    getTallest();
});

person JacobTheDev    schedule 12.07.2013    source источник


Ответы (2)


Пытаться :

function getTallest() {
    var tallest = 0;
    $(".pricingHeader").not(".features .pricingHeader").each(function(i, elem){
       if ( $(elem).height() > tallest ) tallest = $(elem).height();
    });
    $(".pricingHeader").height(function() {
        var add = $(this).closest('.features').length ? 8 : 0;
        return tallest+add;
    });
}

$(function() {
    $(window).on('resize', getTallest).trigger('resize');
});
person adeneo    schedule 12.07.2013
comment
Это вызывает ту же проблему. - person JacobTheDev; 12.07.2013
comment
Что вы ожидаете, какой-либо из элементов меняет размер при изменении размера, иначе как вы получите другой результат -› jsfiddle. сеть/9BdgW .... ??? - person adeneo; 12.07.2013
comment
Да, элементы изменяются в размерах. Я думаю, что понял проблему: я устанавливаю высоту для всех элементов .pricingHeader, что не позволяет чему-либо стать выше начальной высоты. Я работаю над решением. - person JacobTheDev; 12.07.2013

Ладно, я понял, в чем проблема. Я устанавливал высоту каждого .pricingHeader на фиксированную высоту, что не позволяло самому высокому изменять размер при изменении размера окна. Вот исправленный скрипт:

function getTallest() {
    var tallest = 0;
    $(".pricingHeader").not(".features .pricingHeader").each(function(){
        $(this).css({height:"auto"});
        tallest = $(this).height() > tallest?$(this).height():tallest;
    });
    $(".pricingHeader").each(function() {
        $(".pricingHeader").not(".features .pricingHeader").height(tallest);
        $(".features .pricingHeader").height(tallest + 8);
    });
}
$(document).ready(function() {
    getTallest();
});
$(window).resize(function() {
    getTallest();
});
person JacobTheDev    schedule 12.07.2013