2013-03-23 4 views
2

У меня есть простой код анимации jQuery, который я использую для перемещения div слева направо, когда пользователь нажимает на ссылку, а затем справа налево, когда пользователь нажимает на другую ссылку ,jQuery make animation происходит только один раз при нажатии

Моя проблема заключается в том, что если пользователь продолжает щелкать по той же ссылке, div продолжает двигаться влево. Я хочу, чтобы они только могли щелкнуть его один раз, и если они снова нажмут на него, ссылка ничего не сделает.

Вот мой код:

$(document).ready(function(){ 
$('a.facebook').click(function() { 
    $('#social_holder').animate({'left' : '-=420px'}); 
}); 
$('a.twitter').click(function() { 
    $('#social_holder').stop().animate({'left' : '+=420px'}); 
}); 
}); 

пример того, что я работаю, можно найти здесь: http://www.samskirrow.com/client-bionic

Благодаря

+1

Если пользователь нажимает на ссылки поочередно, если они могут перемещать его туда и обратно, или вы имеете в виду, что каждая ссылка должна буквально работать только один раз? – nnnnnn

+0

Да, извините, я имею в виду, что пользователь должен иметь возможность использовать ссылки в качестве альтернативы, чтобы KEEP переместил его обратно на четвертый. –

ответ

1

Скорее всего, используя «+ = 420» и «- = 420», используйте абсолютные позиции.

$(document).ready(function(){ 
$('a.facebook').click(function() { 
    $('#social_holder').animate({'left' : '0'}); 
}); 
$('a.twitter').click(function() { 
    $('#social_holder').stop().animate({'left' : '420px'}); 
}); 
}); 

Это также предотвращает позиционирование div на полпути.

+0

О, это сработало очень красиво, спасибо. Установите абсолютную позицию div #social_holder. И измените левые числа на -420px и 0px. благодаря –

2

Использование one() для любого события, которое должно быть обработано только один раз.

$('a.facebook').one('click', function() { 
    $('#social_holder').animate({'left' : '420px'}); 
}); 

Если вопрос с просьбой оживить назад после того, как кнопка была нажата, то вам нужно сбросить левое свойство вместо того, чтобы увеличить/уменьшить его.

$(document).ready(function(){ 
    $('a.facebook').click(function() { 
     $('#social_holder').animate({'left' : '0'}); 
    }); 
    $('a.twitter').click(function() { 
     $('#social_holder').animate({'left' : '420px'}); 
    }); 
}); 
+0

Как сделать так, чтобы я мог щелкнуть его снова, как только я нажму кнопку? Я хочу, чтобы анимация происходила не один раз, но я не хочу, чтобы пользователь мог перемещать div дважды в одном направлении. –