淡入淡出取决于div id

时间:2012-08-29 05:35:00

标签: jquery

我有一个jquery代码来区分两个div

$("#addresslink").click(function() {
    $("#main").find("div").each(function(n,i){
        var id = this.id;
        if(id == "addressdiv")
        {
            $('#' + id).fadeIn(300);
        }
        else
        {
            $('#' + id).fadeOut(250);
        }
    });

});


$("#storylink").click(function() {
    $("#main").find("div").each(function(n,i){
        var id = this.id;
        if(id == "storydiv")
        {
            $('#' + id).fadeIn(300);
        }
        else
        {
            $('#' + id).fadeOut(250);
        }    
    });

});

是否有更好的方法将a绑定到div而不是硬编码然后显示并隐藏其他div?

P.S:我已经完成了代码,只是询问我是否可以优化它?

2 个答案:

答案 0 :(得分:2)

你的意思是:

$("#addresslink, #storylink").click(function() {
    $("#main").find("div").each(function(n,i){
        var id = this.id;
        if(id == "addressdiv")
        {
            $('#' + id).fadeIn(300);
        }
        else
        {
            $('#' + id).fadeOut(250);
        }
    });
});

答案 1 :(得分:2)

在不改变任何内容的情况下进行优化的一种方法是将公共代码移动到:

$("#addresslink").click(function() {
   fadeDiv('addressdiv');
});

$("#storylink").click(function() {
    fadeDiv('storydiv');     
});

function fadeDiv(divName) {
  $("#main").find("div").each(function(n,i){
            var id = this.id;
            if(id == divName)
            {
                $('#' + id).fadeIn(300);
            }
            else
            {
                $('#' + id).fadeOut(250);
            }    
        });
}

OR

你也可以这样做:

$("#addresslink,#storylink").click(function() {
    fadeDiv(($(this).attr('id')=='addresslink')?'addressdiv':'storydiv');
});

function fadeDiv(divName) {
  $("#main").find("div").each(function(n,i){
            var id = this.id,
$id = $('#' + id);
            (id == divName)? $id.fadeIn(300):$id.fadeOut(250);
        });
}​