$("#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
运行,但我似乎无法正常工作。
我哪里错了?
答案 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
。您应该做的是在移动元素之前捕获元素的原始位置,然后查看它是否小于该值。