我正在研究一个小提琴,似乎有很多JQuery似乎是一个简单的动画。是否有办法缩短这一点,因为它看起来有点沉重?
任何帮助都将不胜感激。
小提琴 - http://jsfiddle.net/9vr2j7LL/
JQuery -
// Services
// Mens
$("#mens").hover(function(){
$("#mens .box").stop().fadeToggle(500);
},
function(){
$("#mens .box").stop().fadeToggle(500);
});
// Womens
$("#womens").hover(function(){
$("#womens .box").stop().fadeToggle(500);
},
function(){
$("#womens .box").stop().fadeToggle(500);
});
// Kids
$("#kids").hover(function(){
$("#kids .box").stop().fadeToggle(500);
},
function(){
$("#kids .box").stop().fadeToggle(500);
});
// Work Wear
$("#workwear").hover(function(){
$("#workwear .box").stop().fadeToggle(500);
},
function(){
$("#workwear .box").stop().fadeToggle(500);
});
// Education
$("#education").hover(function(){
$("#education .box").stop().fadeToggle(500);
},
function(){
$("#education .box").stop().fadeToggle(500);
});
答案 0 :(得分:3)
为所有这些元素提供一个共同的类(例如hover
)
然后,使用此代码:
$('.hover').hover(function() {
$('.box', this).stop().fadeToggle(500);
});
如果hoverIn
和hoverOut
回调做同样的事情,则无需使用两个回调。
答案 1 :(得分:2)
只需使用此函数为您的所有元素提供一个将它们链接在一起的类名。例如:
<div id="mens" class="hover">
然后通过调用.box
简单地获取您悬停在其中的元素中包含的$(this).find('.box')
元素:
$(".hover").hover(function(){
$(this).find('.box').stop().fadeToggle(500);
});
请注意,如果两者都做同样的事情,则无需在悬停中重复该功能。
答案 2 :(得分:1)
$('#id1,#id2,...#idN').hover(function() {
$('.box', this).stop().fadeToggle(500);
},
function() {
$('.box', this).stop().fadeToggle(500);
});
OR:
$('.box').parent().hover(function(){
$('.box', this).stop().fadeToggle(500);
});
或者:
$('div:has(.box)').hover(function(){
$('.box', this).stop().fadeToggle(500);
});
答案 3 :(得分:0)
$("#mens,#womens,#kids,#workwear,#education").hover(function(){
$(this).children(".box").stop().fadeToggle(500);
},
function(){
$(this).children(".box").stop().fadeToggle(500);
});
答案 4 :(得分:0)
顺便说一句,这可以通过CSS转换轻松完成,不需要JavaScript(这种方法的开销可能更少):
transition: background 2s;