仅当position不为0时才动画元素

时间:2013-12-16 14:51:47

标签: jquery

我试图让ul#pikame向右移动它的相对位置IS 0,但即使位置不是0,它也会继续向右移动。

我知道li_left在开头设置为0,它会记住并坚持下去,但我需要li_left更新每次点击。

我的代码:

li_left = $('ul#pikame').css('left');
if (li_left == '0px') {
    $('a.prev').click(function (e) {
        // e.preventDefault();
        $('ul#pikame').animate({
            'left': '+=127'
        });
        e.preventDefault();
    });
}

总结一下,它应该只向右移动,因为在第一次点击后,左边的位置不会是0。

2 个答案:

答案 0 :(得分:1)

if (li_left == 0) { ...

如果查看$('ul#pikame').css('left');返回的值,您会发现它是一个整数。你现在正在比较它的字符串文字“0px”,这是不相等的。

或者,看起来您尝试仅执行一次操作。如果是这种情况,那么您可以使用JQuery的one()函数来执行操作 - 您猜对了 - 只需一次!

DEMO:http://jsfiddle.net/P2L5F/

$('div').one('click', function() {
    $(this).animate({
        'left': '+=127'
    });
});

答案 1 :(得分:0)

您的情况应该在点击处理程序内,而不是在外部。

$('a.prev').click(function (e) {
    li_left = $('ul#pikame').css('left');
    if (li_left == '0px') {
        // e.preventDefault();
        $('ul#pikame').animate({
        'left': '+=127'
    }
    e.preventDefault();
});