使用JQuery AFTER动画更改CSS完成
任何人都可以帮我解决JQuery的这个小问题。 我有一个div,当鼠标hover在标签上时我会继续改变它的边距,我还希望当鼠标越过它们时这些标签的颜色会改变。
该function工作得非常好,但是我有一个小问题,当我将鼠标hover在它上面时,标签的颜色会发生变化,而我希望动画完成然后更改标签。
这是我正在使用的代码:
case 'cat4' : $('#bg').stop(); $('#bg').animate({'marginLeft': '255px'}, 500); $(this).css('color', '#7f3f97'); $('#bg').css('background-image', 'url(images/3.jpg)'); break;
我希望在动画(第二行)结束后立即改变颜色(在代码的第3行)。
非常感谢 …
而不是在.animate
调用之后将它们链接起来,将这些.css
调用放入.animate
的完全回调中 。 此外,您可以通过将键/值对的对象传递给.css
来缩短解决方案。
$('#bg').stop().animate({ 'marginLeft': '255px' }, 500, function() { $(this).css({color: '#7f3f97', backgroundImage: 'url(images/3.jpg)'}); });
此外,使用.addClass
应用CSS时,它更.addClass
,更易于管理:
.newClass{ color: '#7f3f97'; backgroundImage: 'url(images/3.jpg)' } $('#bg').stop().animate({ 'marginLeft': '255px' }, 500, function() { $(this).addClass("newClass"); });
您可以使用animate()
的回调:
case 'cat4': $('#bg').stop().animate({'marginLeft': '255px'}, 500, function(){ $(this).css({ color:'#7f3f97', backgroundImage:'url(images/3.jpg)' }); }); break;