1

とても簡単な作業のように思えますが、スクリプトの後に画像が読み込まれ、子が隠されているため、これを正しく機能させるのは非常に難しいと思います。ページをロードするたびに異なる高さを取得し続けます。

http://jsfiddle.net/ek5Uf/

$("h2").click(function(){
    var $wrap = $(this).parents(".wrapper");
    $wrap.find(".scroller").height(function(){
        var height = 0;            
        $wrap.find(".scroller > li:lt(3)").each(function(){
            height += $(this).outerHeight(true);
        });
        return height;
    }).slideDown();
});

$("h2").eq(0).click();
4

1 に答える 1

1

あまりエレガントではありませんが、これはスクローラーの高さを最初の 3 つのli項目の高さに設定するための堅牢なソリューションになるはずです。

$("h2").click(function(){
    var $wrap = $(this).closest(".wrapper");
    $wrap.find(".scroller").height(function() {
        var lis = $("> li:gt(2)", this).detach(),
            ret = $(this).outerHeight(true);
        $(this).append(lis);
        return ret;
    }).slideDown();
});

フィドル フィドル
を少し編集して、より良いテストのために画像にさまざまなサイズを与えました。

で解決策を作成しようとしました.position()が、奇妙な結果が得られたためdetachlis > 2 は、最初の 3 秒のみで.scroller'sを取得し、切り離されたs を再接続することが、私が想像できる最良の解決策です。outerHeightlili

于 2012-12-08T14:38:24.397 に答える