0
$("#rightControl").click(function(){
    $("#thumb_menu").animate({"left": "-=520px"}, "slow");
    var pos = $('#thumb_menu').position();
    if(pos.left < 0) { 
        $('#header')
            .prepend('<span class="control" id="leftControl">Move left</span>')
}
});

#rightControl一度クリックする#thumb_menuと-450px左に移動するので、if実行する必要がありますが、これを機能させることができないようです。

どこが間違っているのですか?

4

2 に答える 2

2

メソッドが呼び出される.animate()前に位置を変更できるように、へのコールバックに配置します。.position()

$("#rightControl").click(function () {
    $("#thumb_menu").animate({
        "left": "-=520px"
    }, "slow", function() {
        var pos = $(this).position();
        if (pos.left < 0) {
            $('#header').prepend('<span class="control" id="leftControl">Move left</span>')
        }
    });
});

if()それがネガティブな位置に動いていることを知っているなら、私はあなたがその声明を全く必要としないと思います。.prepend()コールバックで行うだけです。

于 2011-08-18T23:20:44.067 に答える
0

positionメソッドは、要素の元の位置ではなく、ドキュメントを基準にしています:http: //api.jquery.com/position/

したがって、要素が実際に画面から外れている場合.position()にのみ発生します。< 0要素を移動する前に要素の元の位置をキャプチャして、それよりも小さいかどうかを確認する必要があります。

于 2011-08-18T23:21:30.870 に答える