我正在使用jQuery過濾表,並且一切都很好。此代碼工作得很好:等待所有異步函數在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
功能更改爲可讀性 奇/偶行的背景顏色現在,這將是很好,如果我可以替換淡入/淡出顯示/隱藏電話,但我不能因爲着色如果它只是一個函數參數 - 我只是創建函數來完成並完成它,但是我的表有很多行並且遍歷每個循環,我該如何等待ALL to compelete?
編輯:代碼示例更新顯示我如何嘗試使用promise()
,但它不起作用。它啓動,但我沒有得到奇怪/均勻着色
爲什麼不在同一時間的'show'行和addClass中添加一個計數器?將意味着少一個循環來調整風格 – charlietfl
任何你沒有使用CSS風格偶數和奇數行而不是jQuery的原因? – Andbdrew
我做過了(儘管它對於舊版瀏覽器不起作用),但現在因爲過濾數據而無法工作。當它着色時,CSS不會計算隱藏行 – katit