我已经编写了一些JavaScript来显示并巧妙地隐藏员工页面上的信息。基本上,有3个标志和3套描述。如果将鼠标悬停在设计徽标上,则会显示设计团队的描述和图像,反之亦然。这是我的代码:
$('.emblem img:first').hover(
function() {
$('.description:eq(1), .description:eq(2)').css({opacity : 0.2});
$('.devStaff').css({opacity : 0.2});
},
function(){
$('.description:eq(1), .description:eq(2)').css({opacity : 1});
$('.devStaff').css({opacity : 1});
}
);
$('.emblem img:eq(1)').hover(
function() {
$('.description:eq(0), .description:eq(2)').css({opacity : 0.2});
$('.designStaff').css({opacity : 0.2});
},
function(){
$('.description:eq(0), .description:eq(2)').css({opacity : 1});
$('.designStaff').css({opacity : 1});
}
);
$('.emblem img:eq(2)').hover(
function() {
$('.description:eq(0), .description:eq(1)').css({opacity : 0.2});
$('.designStaff').css({opacity : 0.2});
},
function(){
$('.description:eq(0), .description:eq(1)').css({opacity : 1});
$('.designStaff').css({opacity : 1});
}
);
现在看看这个,我觉得有一个更好的方法可以做到这一点,我想知道是否有人能够提供一些建议?
答案 0 :(得分:1)
您可以:first
替换:eq(1)
,:eq(2)
和:lt(3)
:
$('.emblem img:lt(3)').hover(
function() {
$('.description:lt(2)').css({opacity : 0.2});
$('.designStaff').css({opacity : 0.2});
},
function(){
$('.description:lt(2)').css({opacity : 1});
$('.designStaff').css({opacity : 1});
}
);
答案 1 :(得分:1)
一般情况下,你不应该重复自己(http://en.wikipedia.org/wiki/Don't_repeat_yourself),
尝试调用更通用的功能,如下所示:
function fadeOut(eqNum1, eqNum2) {
$('.description:eq('+eqNum1+'), .description:eq('+eqNum2+')').css({opacity : 0.2});
$('.devStaff').css({opacity : 0.2});
}
function fadeIn(eqNum1, eqNum2){
$('.description:eq('+eqNum1+'), .description:eq('+eqNum2+')').css({opacity : 1});
$('.devStaff').css({opacity : 1});
}
$('.emblem img:first').hover(fadeOut(1,2), fadeIn(1,2) );
$('.emblem img:eq(1)').hover(fadeOut(0,2),fadeIn(0,2));
$('.emblem img:eq(2)').hover(fadeOut(0,1),fadeIn(0,1));
答案 2 :(得分:0)
我遵循这些规则,不久之前,我会坚持至少遵循第一个规则,至少使用#id而不是.class。