如果位置小于X,则执行一些操作.Jquery

时间:2011-08-18 23:17:47

标签: jquery if-statement prepend

$("#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运行,但我似乎无法正常工作。

我哪里错了?

2 个答案:

答案 0 :(得分: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()

答案 1 :(得分:0)

position方法是相对于文档而不是元素的原始位置: http://api.jquery.com/position/

如果元素实际上不在屏幕上,那么.position()只会是< 0。您应该做的是在移动元素之前捕获元素的原始位置,然后查看它是否小于该值。