基于params的不同函数行为

时间:2013-07-30 09:29:56

标签: javascript optimization parameters

我是jQuery / Javascript的新手,所以我不确定这是否可行。 我有一个简单的函数删除元素,添加一个类并禁用输入按钮:

function removeElements() {
  $("#dragAndDropFiles, placeHolderImage").remove();
  $(".dragDropTag, .dragDrop, .dragDropIcon, #multiUpload").addClass("dropped");
  $("#multiUpload").prop('disabled', true);
}

稍后我将需要基本上反转这个函数(即重新添加所有元素,删除类,并启用输入按钮。我可以通过添加另一个函数来实现:

function addElements() {
  $("#dragAndDropFiles, placeHolderImage").append('<div>markup here</div>');
  $(".dragDropTag, .dragDrop, .dragDropIcon, #multiUpload").removeClass("dropped");
  $("#multiUpload").prop('disabled', false);
}

我的问题是,这可以以某种方式进行优化,所以我不必编写两个函数吗?例如,我可以将它包装成一个重复较少的函数吗? (例如,不是为了添加/删除类或启用/禁用输入字段而重写相同的行,而是根据传入的参数使一行代码执行不同的操作?)

1 个答案:

答案 0 :(得分:0)

基本上,你可以这样做:

function setElements(remove) {
  var dropIds = $("#dragAndDropFiles, placeHolderImage");
  var dropClasses = $(".dragDropTag, .dragDrop, .dragDropIcon, #multiUpload");

  if (remove) {
    dropIds.remove();
    dropClasses.addClass("dropped");
  } else {
    dropIds.append('<div>markup here</div>');
    dropClasses.removeClass("dropped");
  }

  $("#multiUpload").prop('disabled', remove);
}