Найдите самый длинный элемент (jQuery) - PullRequest
2 голосов
/ 03 марта 2010

Я использую этот скрипт для выравнивания высоты элементов:

(function ($) {
    $.fn.autoheight = function () {
        var height = 0,
            reset = $.browser.msie ? "1%" : "auto";
        return this.css("height", reset).each(function () {
            height = Math.max(height, this.offsetHeight);
        }).css("height", height).each(function () {
            var h = this.offsetHeight;
            if (h > height) {
                $(this).css("height", height - (h - height));
            };
        });
    };
})(jQuery);

Я бы хотел добавить к нему только одну дополнительную функциональность - добавить класс 'самый длинный' к самому длинному элементу, найденному при выравнивании высоты, что мне изменить в приведенном выше сценарии?

Большое спасибо.

Ответы [ 3 ]

2 голосов
/ 03 марта 2010

Выше говорите, что решение Стива Клариджа не работает - у меня отлично работает; http://jsfiddle.net/ZqFp5/ (проверено только в хроме)

Хотя с использованием

 $("*")

Селектор несколько неэффективен в большом DOM, рассмотрите возможность добавления класса в div, чтобы использовать более специфический селектор, если это возможно.

 $(".foo") 
1 голос
/ 03 марта 2010

Считайте, что это больше псевдокод, чем что-либо, поскольку он не был протестирован (или даже запущен). Изменен код внутри // новый код комментария

(function ($) {
    $.fn.autoheight = function () {
        var height = 0,
            highest = 0, //new code
            reset = $.browser.msie ? "1%" : "auto";
        return this.css("height", reset).each(function () {
            height = Math.max(height, this.offsetHeight);
            //new code
            if (height > highest) {
              highest = height;
              $("*").removeClass("longest");
              $(this).addClass("longest"); 
            };
            //new code
        }).css("height", height).each(function () {
            var h = this.offsetHeight;
            if (h > height) {
                $(this).css("height", height - (h - height));
            };
        });
    };
})(jQuery);
0 голосов
/ 03 марта 2010

Я помню, как наткнулся на этот сайт. Это помогает? http://www.queness.com/post/126/useful-and-handy-jquery-tips-and-tricks

Читайте номер 10. Колонны равной высоты.

...