Анимировать элемент, только если позиция не равна 0

0

Я пытаюсь сделать ul#pikame move right it его относительное положение 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
Лучший ответ

Ваше состояние должно находиться внутри обработчика кликов, а не снаружи.

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

Если вы посмотрите на значение, возвращаемое $('ul#pikame').css('left'); вы обнаружите, что это целое число. В настоящее время вы сравниваете также строковый литерал "0px", который не равен.

Кроме того, похоже, что вы пытаетесь выполнить одно действие только один раз. Если это так, вы можете использовать функцию JQuery one() для выполнения действия - вы уже догадались - только один раз!

ДЕМО: http://jsfiddle.net/P2L5F/

$('div').one('click', function() {
    $(this).animate({
        'left': '+=127'
    });
});
  • 0
    Уже пробовал. тогда он не двигается ни разу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню