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到左侧 -450 像素,因此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 回答