【发布时间】:2012-06-10 05:16:33
【问题描述】:
我正在使用 jQuery 背景拉伸器,其中背景设置为图像,id="bg" 紧跟在正文之后。但是当有人用 class=selector 和 alt=pathToImage 悬停一个 div 时,我想更改背景图像。 我知道 alt 不是最好在 div 中使用,但我需要找到一个“容器”来存储路径。
background-stretcher 与它应该的完全一样,但是当我悬停某些东西时,它会将背景图像设置为 display="none"。 我真的希望有人可以帮助我。
代码是:
$(window).load(function(){
$('.selector').hover(function() {
var img = document.createElement('img');
img.src = $(this).attr('alt');
img.onload = function() {
$('#bg').fadeOut(function() {
$(this).setAttribute('src', img.src).fadeIn();
}); }; return false; }); });
提前谢谢你:)
编辑! 抱歉花了这么长时间,但让 html 阅读起来不那么痛苦: http://jsfiddle.net/gaFfD/ 由于某些奇怪的原因,悬停效果在 jsfiddle 中不起作用。
【问题讨论】:
-
“我知道在 div 中使用 alt 并不是最好的选择,但我需要找到一个“容器”来存储路径。” 这就是 @ 987654322@是为了。
-
能否提供一个jsfiddle:jsfiddle.net
-
你能发布你的标记吗?还是创建一个小提琴?
-
请注意,您的代码中包含竞争条件。设置
onload之前设置src,否则如果图像在缓存中,事件可能会在行设置src和行设置之间触发(并且,找不到处理程序,什么也不做)onload。 (是的,真的;浏览器上的 JavaScript 是单线程的,除非您使用 Web Worker,但浏览器本身不是。当一个事件触发时,它会将它发现的处理程序排队,以便在 JavaScript 线程运行时运行下一个免费的,但如果没有找到,它不会将它们排队。)
标签: jquery background hover