声明变量避免重复代码的更好方法是什么?

时间:2016-11-30 11:01:02

标签: javascript jquery jquery-ui

这是我尝试使用的js代码。我不喜欢同样的代码再次重复,我无法帮助自己以更好的方式做到这一点。

$(function(){
  $('[data-behavior~=quick-reject]').on("click", function(){
    var form = $(this).closest("[data-behavior~=modal-footer]").find("form");
    var some_action = form.find("#some_actions").val();
    var some_reasons = form.find("[data-behavior~=escalation-reason-select-box]");

    if((some_reasons.val() === "") && ( some_action === "reject")){
      var errorReason = "Please select a reason";
      form.addClass("error").
      parent().
      find("div.error").
      html(errorReason);
    }else{
      form.submit();
    }
  });

  $(document).on("change", "#some_actions", function (){
    var form = $(this).closest("[data-behavior~=modal-footer]").find("form");
    var some_action = form.find("#some_actions").val();
    var some_reasons = form.find("[data-behavior~=escalation-reason-select-box]");

    if(some_action === "verify"){
      some_reasons.hide();
    }else{
      some_reasons.show();
    }
  });
});

1 个答案:

答案 0 :(得分:0)

你可以制作一个小实用功能,比如。

function getVars(that) {
  var form = $(that).closest("[data-behavior~=modal-footer]").find("form");
  return {
    form: form,
    some_action: form.find("#some_actions").val(),
    some_reasons: form.find("[data-behavior~=escalation-reason-select-box]")
  }
}

$('[data-behavior~=quick-reject]').on("click", function(){
    var v = getVars(this);
    if((v.some_reasons.val() === "") && ( v.some_action === "reject")){
      var errorReason = "Please select a reason";
      v.form.addClass("error").
      parent().
      find("div.error").
      html(errorReason);
    }else{
      v.form.submit();
    }
});

$(document).on("change", "#some_actions", function (){
    var v = getVars(this);
    if(v.some_action === "verify"){
      v.some_reasons.hide();
    }else{
      v.some_reasons.show();
    }
});