2013-02-13 2 views
0

Я уверен, что мне не хватает чего-то глупого здесь, но я не вижу этого.
Что должно произойти, так это то, что при вертикальном списке, когда щелкнул LI, он оживляет правый 10px, если щелкнуть другой LI, тогда он перемещается назад, а щелкнутый LI перемещается вправо.
Это прекрасно работает в списке, но если я вернусь к предыдущему LI, предыдущий выбранный движется назад, как следует, но щелкнутый LI не оживляет, поэтому, когда вы щелкаете назад и вперед, LI продолжает двигаться дальшеАнимация позиции LI при нажатии

$("#navig li").click(function(){ 
$("#navig li.selected").animate({ 
     left: "-=10px", 
     }, 300); 
    $("#navig li.selected").removeClass("selected") 

    $(this).addClass("selected") 
    $(this).animate({ 
     right: "-=10px", 
     }, 300); 
}) 
+0

где ваше событие click?, Js code? – AlexC

+0

$ ("# navig li"). Click (function() { – user2036277

+0

всегда корректировать свойство 'left', не смешивать' left' и 'right' – charlietfl

ответ

0

Если вы регулируете left либо плюс или минус, делать противоположное для других условий, но сделать это в той же позиции собственности left.

0

Вам нужно что-то вроде этого?

http://jsfiddle.net/v3LWL

$("#navig li").click(function(){ 
    var $this = $(this), 
     el = $this.siblings().filter(".selected"); 

    el.animate({left: 0}, 300, function(){ 
     $(this).removeClass("selected"); 
    }); 

    $this.animate({left: 10}, 300, function(){ 
     $(this).addClass("selected"); 
    }); 

}); 
+0

Мне интересно, было бы лучше иметь его как часть css? – user2036277

+0

if вы не заботитесь о IE7/Ie8, который не поддерживает переход, я бы использовал css way – AlexC

+0

Спасибо за это. Я немного поиграл с ним, но мне не понравилась эстетика ожидания зеленого фона на LI появляются, и я думаю, что добавление отдельного класса только для анимации просто делает больше работы. – user2036277

Смежные вопросы