2

jQueryを使用してテーブルをフィルタリングしていますが、すべて問題ありません。このコードはうまく機能します:

$("*[id$='EquipmentTypeDropDownList']").change(filterTable);
$("*[id$='StateDropDownList']").change(filterTable);

function filterTable() {
  var $equipmentDropDown = $("*[id$='EquipmentTypeDropDownList']");
  var $stateDropDown = $("*[id$='StateDropDownList']");

  var equipmentFilter = $equipmentDropDown.val();
  var stateFilter = $stateDropDown.val();

  $("tr.dataRow").each(function () {
    var show = true;

    var equimpent = $(this).find("td.equipment").text();
    var state = $(this).find("td.readyState").text();

    if (equipmentFilter != "Any" && equipmentFilter != equimpent) show = false;
    if (stateFilter != "Any" && stateFilter != state) show = false;

    if (show) {
      $(this).fadeIn();
    } else {
      $(this).fadeOut();
    }
  });

  $("table").promise().done(colorGridRows);
}

function colorGridRows() {
  //for table row
  $("tr:visible:even").css("background-color", "#DED7D1");
  $("tr:visible:odd").css("background-color", "#EEEAE7");
}

colorGridRows関数は、読みやすくするために偶数/奇数行の背景色を変更します。今、表示/非表示呼び出しをfadeIn/fadeOutに置き換えることができればいいのですが、色付けが機能しないためできません(UI効果が完了する前に実行されます。は関数パラメータの 1 つにすぎませんでした - 完了用の関数を作成し、それで完了します.しかし、私のテーブルには多くの行があり、それぞれにループが実行されます.ALL が完了するのを待つにはどうすればよいですか?

EDITED:コードサンプルが更新され、使用方法を示していますpromise()が、機能しません。発火しますが、奇数/偶数の色がつきません。

4

1 に答える 1