2

我有一个 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 而不是将每个硬编码到 a 然后显示和隐藏其他 div?

PS:我已经完成了代码只是询问我是否可以优化这个?

4

2 回答 2

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);
        }
    });
});
于 2012-08-29T05:38:16.460 回答
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);
            }    
        });
}

或者

你也可以这样做:

$("#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);
        });
}​
于 2012-08-29T05:39:10.063 回答