4

隣り合う div の高さを同じにしたいページがあります。

私は次の機能を持っています:

function setProjectsHeight() {
    var count = 0;
    $(".project").each(function() {
        if(count % 3 === 0) { 
            var highest = 0;
            for(i=count;i<=count+2;i++) {
                if($("div.project#"+i).height() > highest) { 
                    highest = $("div.project#"+i).height(); 
                }
            }
            console.log(highest);
        }
        count++;
    });
}

どういうわけか、高さは常にゼロです。セレクターは正しいようです (テスト済み)。同じセレクターで幅を console.log() にすると、200 (正しい) が返されます。

編集:ちょうどそれを解決しました! どういうわけか、css で「body {display:none}」を設定し、document.ready() の最後でこのプロパティを「block」に戻すというアイデアがありました。これを行ったのは、jQuery UI ボタン​​を使用していて、ユーザーがそれらのボタンが通常のリンクから UI レイアウトに切り替わるのを見たからです。

この機能を削除すると、すべてが再び機能しました。setProjectsHeight() が呼び出されたとき、本体はまだ display:block だったようです。したがって、計算された高さはありませんでした。

ご協力いただきありがとうございます!

4

6 に答える 6

3

document.read() の代わりに window.load() イベントからその関数を呼び出してみてください。

この問題の理由は、すべての img/object/... 要素の読み込みが完了するまで、jQuery が wi​​dth() および height() 設定を開始しないためです。ready() は、ページが処理されるとすぐに起動します。ただし、一部のオブジェクトはその時点でまだダウンロード中の場合があります。

于 2012-05-16T13:23:42.800 に答える
2

フロートをクリアする/クリアフィックスを適用する要素があることを確認してください (何かがフロートされている場合)。これを行わないと、少なくとも親コンテナは必要な高さまで拡張されません。

.outerHeight()これにはボーダーのサイズとパディングが含まれているため、これも使用してみてください。

于 2012-05-16T13:22:00.507 に答える
1

セレクターは 0、1、2 などの ID を想定しているため、すべて.projectの要素に適切な ID 属性もあると確信していますか?$("div.project#"+i)

于 2012-05-16T13:42:30.170 に答える
1

セレクターが間違っている可能性があります。ID はドキュメント内で一意であり、ルックアップが最も速いため、ID セレクターを単独で使用する必要があります。

$('#'+i)

また、人々が言及したように、数字で始まるIDを持つことは無効です(ただし、ほとんどのブラウザで機能します)

また、DOM に重複した ID がある可能性もあります。その場合、期待どおりに何も機能しません。dom id は一意である必要があります

于 2012-05-16T13:26:26.123 に答える
0

タグIDがある場合は1, 2, 3、プロジェクトの後にスペースを入れてください

$("div.project #"+i)
于 2012-05-16T13:23:09.757 に答える
0

ちょうどそれを解決しました!どういうわけか、css で「body {display:none}」を設定し、このプロパティを document.ready() の最後で「block」に戻すというアイデアがありました。これを行ったのは、jQuery UI ボタン​​を使用していて、ユーザーがそれらのボタンが通常のリンクから UI レイアウトに切り替わるのを見たからです。

この機能を削除すると、すべてが再び機能しました。setProjectsHeight() が呼び出されたとき、本体はまだ display:block だったようです。したがって、計算された高さはありませんでした。

ご協力いただきありがとうございます!

于 2012-05-19T00:38:39.517 に答える