2

2つのdivを区別するjqueryコードがあります

$("#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);
        }    
    });

});

それぞれをハードコーディングしてから他の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

何も変更せずに最適化する1つの方法は、共通コードを機能するように移動することです。

$("#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 に答える