如何清理我的重复jquery代码?

时间:2015-05-21 09:14:31

标签: jquery html ajax coding-style

我正在写一个你可以提问和回答问题的系统,看起来像这样:

Example

一切正常,但代码看起来很可怕!很多重复的部分做了几乎相同的事情。

这仅适用于voteUp-Buttons,voteDown-Buttons的代码几乎相同(除了我降低分数而不是增加分数):

$(document).ready(function(){
    $(".btn-default").click(function(){
        if( $(this).val() == 'voteUp'){

            if( $(this).hasClass("questionButton") ){

            $(this).html( "<span class='glyphicon glyphicon-arrow-up' aria-hidden='true' style='color:orange'></span>" );

            var currentScore = $(this).parent('li').find('> .num').text();
            $(this).parent('li').find('> .num').html(parseInt(currentScore) + 1);

            var currentID = $(this).parent('li').find('> .num').attr('id');

            var buttonType = "questionButton";

            <!-- AJAX script to send the voteScore to the controller and then put it into the DB -->
            $.ajax({ 
                type : 'POST',
                url : '@routes.Application.voteUp()',
                data : {
                    questionID : currentID,
                    score : currentScore,
                    type: buttonType
                    },
                success : function(data){
                    }
            });
            }

            if( $(this).hasClass("answerButton") ){

            $(this).html( "<span class='glyphicon glyphicon-arrow-up' aria-hidden='true' style='color:orange'></span>" );

            var currentScore = $(this).parent('li').find('> .num').text();
            $(this).parent('li').find('> .num').html(parseInt(currentScore) + 1);

            var currentID = $(this).parent('li').find('> .num').attr('id');

            var buttonType = "answerButton";

            <!-- AJAX script to send the voteScore to the controller and then put it into the DB -->
            $.ajax({ 
                type : 'POST',
                url : '@routes.Application.voteUp()',
                data : {
                    questionID : currentID,
                    score : currentScore,
                    type: buttonType
                    },
                success : function(data){
                    }
            });
            }
        }

由于我使用了很多$(this)并且其上下文发生了多次更改,因此我不确定如何清理代码。因为目前很难阅读并因此难以维护/扩展。我想我至少可以外包AJAX-POST,但其余的都是重复的。

那么我怎样才能重新考虑我的代码并删除重复的程序?

1 个答案:

答案 0 :(得分:1)

试图优化,欢迎提出建议

#page 
{ 
     overflow:hidden; 
}