2

このスクリプトを使用して、要素の高さを均等にします。

(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);

追加機能を 1 つだけ追加したいと思います。高さを均等化するときに見つかった最長の要素にクラス「最長」を追加します。上記のスクリプトで何を変更すればよいですか?

どうもありがとう。

4

3 に答える 3

2

あなたが言うSteve Claridgeの上記の解決策はうまくいきません - 私にとってはうまくいきます。http://jsfiddle.net/ZqFp5/ (クロムのみでテスト済み)

を使用していますが、

 $("*")

セレクターは、大きな DOM ではやや非効率的です。可能であれば、div にクラスを追加して、より具体的なセレクターを使用することを検討してください。

 $(".foo") 
于 2010-03-03T17:41:42.273 に答える
1

テストされていない(または実行されていない)ため、これは何よりも疑似コードであると考えてください。//new code コメント内の変更されたコード

(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);
于 2010-03-03T14:46:01.857 に答える
0

たまたまこのサイトにたどり着いたのを覚えています。これは役に立ちますか? http://www.queness.com/post/126/useful-and-handy-jquery-tips-and-tricks

10 番を読んでください。同じ高さの列。

于 2010-03-03T12:22:02.943 に答える