Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有更好的方法来编写jQuery代码?_Javascript_Jquery - Fatal编程技术网

Javascript 有没有更好的方法来编写jQuery代码?

Javascript 有没有更好的方法来编写jQuery代码?,javascript,jquery,Javascript,Jquery,我已经编写了一些JavaScript来显示和微妙地隐藏员工页面上的信息片段。基本上,有3个标志和3套描述。如果您将鼠标悬停在设计徽标上,它将显示设计团队的描述和图像,反之亦然。以下是我执行此操作的代码: $('.emblem img:first').hover( function() { $('.description:eq(1), .description:eq(2)').css({opacity : 0.2});

我已经编写了一些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});
            }
        );

现在看看这个,我觉得肯定有更好的方法可以做到这一点,我想知道是否有人能提供一些建议?

我遵循我刚才书签上的这些规则,至少我会大胆地遵循第一条,使用#id而不是.class作为最低要求


您可以用
:lt(3)
替换
:first
:eq(1)
:eq(2)


一般来说,你不应该重复你自己(http://en.wikipedia.org/wiki/Don“你自己重复一遍)

尝试调用更通用的函数,如下所示:

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));

根据你的描述,这一切似乎都可以用CSS来完成。并不是说使用javascript来做这件事是错误的,而是代码要少得多。如果你在jsfiddle.net中构建它,你可能会得到一些非常好的答案。寻找重复的代码和保持不变的代码-提取变化的内容,模板保持不变的内容,然后将变量注入模板。
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));