0

私は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);
}

私の質問は、これを何らかの方法で最適化できるので、2 つの関数を記述する必要がないということです。たとえば、重複の少ない 1 つの関数にラップできますか? (たとえば、クラスの追加/削除や入力フィールドの有効化/無効化のために同じ行を書き直す代わりに、渡されたパラメーターに基づいて異なることを行う 1 行のコードを作成しますか?)

4

1 に答える 1

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);
}
于 2013-07-30T09:36:56.340 に答える