使用 jQuery 交换字体和背景颜色
我在页面上显示 40 多个框:
<div id="primary">
<div class="box" style="background:....">
<a href="" style="color:....">box1</a>
</div>
<div class="box" style="background:....">
<a href="" style="color:....">box2</a>
</div>
....
</div>
如您所见,我设置了背景颜色和文本颜色。悬停时我想交换颜色:
$(".box").each( function () {
$(this).data('baseColor',$(this).css('background-color'));
$(this).find('a').data('fontColor',$(this).css('color'));
$(this).hover(function() {
$(this).animate({ backgroundColor:
$(this).data('fontColor') }, 500);
},function() {
$(this).animate({ backgroundColor:
$(this).data('baseColor') }, 1000);
});
});
背景颜色的动画有效,但我无法更改 a 元素的字体颜色。有什么想法吗?
I display 40+ boxes on a page:
<div id="primary">
<div class="box" style="background:....">
<a href="" style="color:....">box1</a>
</div>
<div class="box" style="background:....">
<a href="" style="color:....">box2</a>
</div>
....
</div>
As you can see I set background-color and text-color. On hover I want to swap the colors:
$(".box").each( function () {
$(this).data('baseColor',$(this).css('background-color'));
$(this).find('a').data('fontColor',$(this).css('color'));
$(this).hover(function() {
$(this).animate({ backgroundColor:
$(this).data('fontColor') }, 500);
},function() {
$(this).animate({ backgroundColor:
$(this).data('baseColor') }, 1000);
});
});
The animation of the background-color works but I can not change the font color of the a element. Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
正如 @Brandon 提到的,您需要 jQuery UI (或其他东西;)来为非整数属性设置动画。
更大的问题是
each
回调中的上下文发生变化:在hover
回调方法中,this
的值并不总是你想要的。此外,创建新的 jQuery 对象(使用$(...)
)相对昂贵。尝试:此处进行演示。
As @Brandon mentioned, you need jQuery UI (or something ;) to animate non-integer properties.
The bigger issue is the change of context in your
each
callback: inside thehover
callback methods, the value ofthis
won't always be what you want. Also, creating new jQuery objects (with$(...)
) is relatively expensive. Try:Demo here.
jQuery 无法自行设置颜色动画;您必须使用颜色插件。
至于交换颜色,您必须有一个临时变量来临时存储其中一种颜色。一些伪代码是这样的:
jQuery can't animate colors on it's own; you'll have to use the color plugin.
As for swapping the colors around, you'll have to have an interim variable to temporarily store one of the colors. Some pseudocode would be this: