我有以下jquery在悬停时动画:
$('#footerNetwork').hover(function(){
$('#popupNetwork').animate({top:'-62px'},{queue:true,duration:500});
}, function(){
$('#popupNetwork').animate({top:'30px'},{queue:true,duration:500});
});
$('#footerPort').hover(function(){
$('#popupPort').animate({top:'-62px'},{queue:true,duration:500});
}, function(){
$('#popupPort').animate({top:'30px'},{queue:true,duration:500});
});
$('#footerAirport').hover(function(){
$('#popupAirport').animate({top:'-62px'},{queue:true,duration:500});
}, function(){
$('#popupAirport').animate({top:'30px'},{queue:true,duration:500});
});
等...
如何将这些组合到功能上,该功能可识别哪个链接已被悬停(即:footerNetwork)并将相应的div定位到动画(popupNetwork)? 谢谢!
答案 0 :(得分:1)
你可以这样做:
var tops = { footerNetwork:'-80px', footerPort:'-62px', footerAirport:'-62px' };
$('#footerNetwork, #footerPort, #footerAirport').hover(function(){
$('#'+this.id.replace('footer','popup')).animate({top: tops[this.id]}, 500);
}, function(){
$('#'+this.id.replace('footer','popup')).animate({top:'30px'}, 500);
});
如果您为这些元素添加一个类class="footer"
,那么您可以将.hover()
更改为$('.footer').hover(function(){
以使其更清晰。要获取相应的#popup_____
元素,我们只需获取当前ID,例如footerNetwork
并执行.replace()
获取弹出ID。 tops
对象用于存储各种最高值,因为它们不同。
答案 1 :(得分:0)
我假设您在要添加悬停行为的项目上有一个类foo
。然后,只需遵循(明显的)footer...
模式:
$(document).ready( function(){
$('.foo').hover(
function(){
$('#popup' + this.id.substr(6,this.id.length-6) ).animate({...});
// ^remove "footer" portion of id
},
function(){
$('#popup' + this.id.substr(6,this.id.length-6) ).animate({...});
}
);
});
根据文档的结构,您还可以按容器识别“页脚...”元素,而不是按类别识别。
答案 2 :(得分:0)
由于偏移量不是固定的,一次调用不可能获得相同的结果,但是,这样的函数可以解决这个问题:
function hoverIt(name, topIn, topOut, duration)
duration = (duration != undefined) ? duration : 500;
$('#footer' + name).hover(function(){
$('#popup' + name).animate({top: topIn + 'px'},
{queue: true, duration: duration});
}, function(){
$('#popup' + name).animate({top: topOut + 'px'},
{queue: true, duration: duration});
});
}
然后只需为每个动画调用该函数:
hoverIt('Network', -80, 30, 300);
hoverIt('Port', -62, 30);
hoverIt('Airport', -62, 30);
我猜是好多了。如果有很多,你可以使用类似的东西:
var hovers = [['Network', -80, 30, 300],
['Port', -62, 30],
['Airport', -62, 30]];
for (var i = 0; i < hovers.length; i++) {
hoverIt(hovers[i][0], hovers[i][1], hovers[i][2], hovers[i][3]);
}
注意:未经过测试