2012-05-29 3 views
0

http://jsfiddle.net/hashie5/ZKwA6/JQuery анимации правый

Мои ссылки скользить вправо сейчас, но они не совпадают правильно. Мне нужен анимированный номер с text-align:right или float:right. Также, когда вы оставляете ссылку, текст должен снова выравниваться слева.

ответ

0

еще не совсем то, что вы хотите, но если вы добавите класс права и удалить его, он может смотреть в сторону, что вы хотите

$('document').ready(function() { 
    $('.menu td').delegate('', 'mouseover', function() { 
     $(this).find('a').animate({ 
      "left": "0", 
     }, 500); 
     $(this).addClass('right'); 
    }); 
    $('.menu td').delegate('', 'mouseout', function() { 
     $(this).find('a').attr('style', 'left:0;'); 
     $(this).removeClass('right'); 
    }); 
});​ 

Обратите внимание, что я установил animiation левых до 0 ... вы можете узнать об этом fiddle

Скрипка показывает только влево/вправо, и я думаю, вы хотите анимировать ее справа. Но анимировать его слева направо с изменением выравнивания может потребоваться некоторые дополнительные расчеты

EDIT: Добавлена ​​комбинация ответов как все они показывают кусок раствора

$('document').ready(function() { 
    $('.menu td').delegate('', 'mouseover', function() { 
     $(this).find('a').stop().animate({ 
      "left": $(this).width() - $(this).find('a').width() 
     }, 500); 
    }); 
    $('.menu td').delegate('', 'mouseout', function() { 
     $(this).find('a').stop().animate({ 
      "left": "0", 
     }, 500); 
    }); 
});​ 

Кредиты на: Алекс Болл, Raminson, Esailija

+0

это то, что мне нужно, но теперь мне все еще нужен анимировать! спасибо – Ruben

+0

Вам нужна комбинация из ответов. Используйте .Stops() плюс вычисление для left(). –

1

Попробуйте это, ti должен работать.

$('document').ready(function() { 

    $('.menu td').hover(
     function() { 
     var a = $(this).find('a').first(); 
     a.css('position', 'relative') 
     .stop().animate({ left: $(this).width() - a.width()}); 
     }, 
     function() { 
     $(this).find('a').first().stop().animate({ left: 0 }); 
     }); 
    }); 
1

попробовать метод парения:

$('.menu td').hover(function() { 
     $(this).find('a').animate({ 
      "left": "140" 
     }, 500); 
    }, 
     function() { 
     $(this).find('a').animate({ 
      "left": "0" 
     }, 500); 
    }); 

http://jsfiddle.net/ZKwA6/10/

использованием стоп();

$('.menu td').hover(function() { 
     $(this).find('a').stop().animate({ 
      "left": "140" 
     }, 500); 
    }, 
     function() { 
     $(this).find('a').stop().animate({ 
      "left": "0" 
     }, 500); 
}); 

http://jsfiddle.net/ZKwA6/20/

+1

Могу ли я использовать '.stops()' там ... – Esailija

+0

спасибо, но проблема в том, что слева: 140, он должен просто выравнивать текст вправо, теперь он по-прежнему выравнивается влево; left: 140 был лучшим, что я мог сделать – Ruben

2

Для выравнивания вправо используйте выше код и изменить

"left":"140" 

с

"left": $(this).width() - $(this).find('a').width() 
+0

это оно, отлично – Ruben