结合2个相同的jquerys与不同的触发器

时间:2017-11-10 10:24:16

标签: jquery refactoring

可能是一个非常简单的问题。我有两个相同的jquerys,一个字段更新时触发一个,另一个更新时触发一个。我可以将两者结合起来,如果它发生变化,或者变化是否有功能?

$(document).ready(function(){


    $("#premium").change(function(){
            var sum = 0;
            $("#premium").each(function(){
                sum += +$(this).val(); 
            });
            var ff_budget = $("#ff_budget").val();
            var premium_difference = ff_budget-sum;
            $("#total_premium").html("£ "+sum);
            $("#premium_difference").html("£ "+premium_difference);
        });

    $( "#ff_budget" ).change(function() {
            var sum = 0;
            $("#premium").each(function(){
                sum += +$(this).val(); 
            });
            var ff_budget = $("#ff_budget").val();
            var premium_difference = ff_budget-sum;
            $("#total_premium").html("£ "+sum);
            $("#premium_difference").html("£ "+premium_difference);
        });

});

2 个答案:

答案 0 :(得分:1)

在jQuery中,您可以使用以逗号分隔的多个选择器。这应该适合你:

$(document).ready(function(){
  $("#premium, #ff_budget").change(function(){
        var sum = 0;
        $("#premium").each(function(){
            sum += +$(this).val(); 
        });
        var ff_budget = $("#ff_budget").val();
        var premium_difference = ff_budget-sum;
        $("#total_premium").html("£ "+sum);
        $("#premium_difference").html("£ "+premium_difference);
  });

});

答案 1 :(得分:0)

当然这些可以合并。我看到两个事件监听器的代码都是相同的。

您可以使用jQuery's multiple selector来获得所需的结果:

$(document).ready(function(){

    $("#premium, #ff_budget").change(function(){
        var sum = 0;
        $("#premium").each(function(){
            sum += +$(this).val(); 
        });
        var ff_budget = $("#ff_budget").val();
        var premium_difference = ff_budget-sum;
        $("#total_premium").html("£ "+sum);
        $("#premium_difference").html("£ "+premium_difference);
    });
});