1

矢印を使用して切り替えるときに、アニメーションの最大高さを制限したい。関数を作成しようとすると、divの高さと+-ステップがpxで計算されます。しかし、今では変数に書き込まれています。

var maxfloorh = $('.floor-switch').height();
var actualh = $('.floor-switch').height();
$('.floor-switch li').click(function() {
    $('#line').animate({
        top: $(this).position().top
    });
});
function floorarrs(numbr) {
    switch (numbr) {
        case 1:
            //check here maxfloorh
            $('#line').animate({
                top: '-=18'
            }, 400, function() {
                maxfloorh-'18';
                console.log(maxfloorh);
            });

        break
        case 2:
              //check here maxfloorh
            $('#line').animate({
                top: '+=18'
            }, 400, function() {
                maxfloorh+'18';
                console.log(maxfloorh);
            });

        break
    }
}
$('.arrw-up').click(function() {
    floorarrs(1);
});
$('.arrw-dwn').click(function() {
    floorarrs(2);
});​

HTML:

<div id="floors" style="margin:60px;">
    <div class="arrw-up"></div>
    <div class="floor-switch">
        <div id='line'></div>
        <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
        </ul>
    </div>
    <div class="arrw-dwn"></div>
</div>​

ライブ: http: //jsfiddle.net/cxvec/2/

4

1 に答える 1

1
$('.arrw-up').click(function() {
  if ($("#line").css("top") !== "0px") {
    floorarrs(1);
  }
});

$('.arrw-dwn').click(function() {
  if ($("#line").css("top") !== ""+($("#pagination li").length-1)*18+"px") {
    floorarrs(2);
  }
});​

これが作業中のフィドルです

click矢印関数のロジックを変更しました。cssではtop、要素の初期属性が ...id=lineに設定されています。これで、 -> divが1番目になると、関数は実行されません。注:これは最善の解決策であると思われるかもしれませんが、解決策の1つです0pxtop = 0pxli

于 2012-11-05T15:35:32.163 に答える