Я пытаюсь сделать 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.
Ваше состояние должно находиться внутри обработчика кликов, а не снаружи.
$('a.prev').click(function (e) {
li_left = $('ul#pikame').css('left');
if (li_left == '0px') {
// e.preventDefault();
$('ul#pikame').animate({
'left': '+=127'
}
e.preventDefault();
});
if (li_left == 0) { ...
Если вы посмотрите на значение, возвращаемое $('ul#pikame').css('left');
вы обнаружите, что это целое число. В настоящее время вы сравниваете также строковый литерал "0px", который не равен.
Кроме того, похоже, что вы пытаетесь выполнить одно действие только один раз. Если это так, вы можете использовать функцию JQuery one()
для выполнения действия - вы уже догадались - только один раз!
ДЕМО: http://jsfiddle.net/P2L5F/
$('div').one('click', function() {
$(this).animate({
'left': '+=127'
});
});