我有三张图片,显示和样式如下:
<img id="img1" src="images/category_slideshow/yellow-viper-on-car-ramps.jpg" alt="Yellow Viper on Race Ramps Car Ramps" width="557" height="415" />
<img class="onBottom" src="" width="557" height="415" />
<img class="onTop" src="" width="557" height="415" />
.onBottom{
position:absolute;
margin-top:-415px;
background:url(../images/category_slideshow/loading.gif) center no-repeat;
}
.onTop{
position:absolute;
margin-top:-415px;
background:url(../images/category_slideshow/loading.gif) center no-repeat;
}
这是我的Javascript:
$(document).ready(function() {
var productImages = new Array();
productImages["raceramps56"] = "images/category_slideshow/black-350z-on-car-ramps.jpg";
productImages["raceramps67"] = "images/category_slideshow/red-corvette-on-car-ramps.jpg";
productImages["xtenders"] = "images/category_slideshow/silver-sti-on-xtenders.jpg";
productImages["sportramps"] = "images/category_slideshow/black-corvete-on-car-ramps.jpg";
productImages["rollups"] = "images/category_slideshow/yellow-lotus-on-rollups-for-car-ramps.jpg";
$(".onTop, .onBottom").css("opacity", "0"); //Give the two images 0 opacity
$( '.leftMenuProductButton' ).hover (
function () {
//.leftMenuProductButton is a button in a menu.
// There are several of these buttons, each button
// has an ID such as "raceramps56" or "xtenders"
var swapIMG = $(this).attr("id"); //This gets the ID, such as "raceramps56" or "xtenders"
$(".onTop").css({opacity: '0', 'z-index': '3'})
.attr("src", productImages[swapIMG])
.load(function() {
//This takes the first IMG, make it invsisbile,
// brings it to the top, replaces it's SRC image
// with the variable, then once it is loaded, it fades in.
$(this).fadeTo(300, 1);
})
.removeClass("onTop")
.addClass("replaceMe"); // This removes the class "onTop and replaces it with "replaceMe". I can't simply change onTop to onBottom yet, as I need to reference onBottom later.
$(".onBottom").addClass("onTop").removeClass("onBottom").css({'z-index': '1'}); // This converts onTop to onBottom, and puts it at the bottom.
$(".replaceMe").removeClass("replaceMe").addClass("onBottom"); //Now that I no longer have an onBottom, I can replace replaceMe with onBottom
},
function () {
//does nothing right now
});
});
这段代码运行得很好。但是,如果我鼠标悬停.leftMenuProductButton,然后移动到另一个.leftMenuProductButton,然后在两者之间来回移动,它表现不正常。
您可以在www.raceramps.com/v3上查看示例。
答案 0 :(得分:1)
$(".onTop").css({opacity: '0', 'z-index': '3'}).attr("src",productImages[swapIMG]).load(function() {
$(this).fadeTo(300, 1, function(){
$(this).removeClass("onTop").addClass("replaceMe");
});
});
这样它就不会删除该类,直到完全消失。如果你链接.removeClass就像你所做的那样,它将在LOAD完成后立即被触发而不是淡入淡出。
第二,我会在开始新动画之前停止所有动画尝试添加
$(".onTop").stop();
在悬停功能之上