我的數據表失去了點擊時按'asc'和'desc'切換的能力。當我擺脫表頭的點擊函數時,它正常工作,但是當它們像在提供的例子中一樣添加時,在'asc'和'desc'之間切換的能力就會丟失。我的代碼似乎干擾默認的數據源代碼的任何答案或建議?數據表排序功能問題
問題
我不能讓表前往爲「ASC」和「月」,如果它的工作的功能,其他部分如搜索會停止正常工作之間切換。
概述
我有一個表,是由各個列搜索。您可以選擇以兩種方式之一搜索哪一列。
有一個下拉列表,列出了所有的列名,當您選擇的選項對應的表頭排序爲「ASC」,然後如果你點擊表格標題可以「ASC」和「說明」之間進行切換。
您也可以簡單地點擊表格標題並選擇相應的選擇選項。表格標題也總是以「asc」開始,並且您可以在點擊時切換「asc」和「desc」。
代碼
$('#dtSelect').change(function() {
var searchInput = $("#searchInput");
if ($(this).val() == "0") {
$("#searchBtn").on('click', function() {
$("tbody tr td:nth-child(1):not(:contains('" + searchInput.val() + "'))").parent("tr").css("display", "none");
$("tbody tr td:nth-child(1):contains('" + searchInput.val() + "')").parent("tr").css("display", "");
});
}
else if ($(this).val() == "1") {
$("#searchBtn").on('click', function() {
$("tbody tr td:nth-child(2):not(:contains('" + searchInput.val() + "'))").parent("tr").css("display", "none");
$("tbody tr td:nth-child(2):contains('" + searchInput.val() + "')").parent("tr").css("display", "");
});
}
else if ($(this).val() == "2") {
$("#searchBtn").on('click', function() {
$("tbody tr td:nth-child(3):not(:contains('" + searchInput.val() + "'))").parent("tr").css("display", "none");
$("tbody tr td:nth-child(3):contains('" + searchInput.val() + "')").parent("tr").css("display", "");
});
}
else if ($(this).val() == "3") {
$("#searchBtn").on('click', function() {
$("tbody tr td:nth-child(4):not(:contains('" + searchInput.val() + "'))").parent("tr").css("display", "none");
$("tbody tr td:nth-child(4):contains('" + searchInput.val() + "')").parent("tr").css("display", "");
});
}
else if ($(this).val() == "4") {
$("#searchBtn").on('click', function() {
$("tbody tr td:nth-child(5):not(:contains('" + searchInput.val() + "'))").parent("tr").css("display", "none");
$("tbody tr td:nth-child(5):contains('" + searchInput.val() + "')").parent("tr").css("display", "");
});
}
else if ($(this).val() == "5") {
$("#searchBtn").on('click', function() {
$("tbody tr td:nth-child(6):not(:contains('" + searchInput.val() + "'))").parent("tr").css("display", "none");
$("tbody tr td:nth-child(6):contains('" + searchInput.val() + "')").parent("tr").css("display", "");
});
}
});
$('#dtSelect').change(function() {
var column = $(this).val();
var oTable = $('#example').dataTable();
if (column !== "") {
oTable.fnSort([
[column, 'asc']
]);
}
});
$('th:nth-child(1):first').click(function() {
$('#dtSelect').val(0).change();
});
$('th:nth-child(2):first').click(function() {
$('#dtSelect').val(1).change();
});
$('th:nth-child(3):first').click(function() {
$('#dtSelect').val(2).change();
});
$('th:nth-child(4):first').click(function() {
$('#dtSelect').val(3).change();
});
$('th:nth-child(5):first').click(function() {
$('#dtSelect').val(4).change();
});
$('th:nth-child(6):first').click(function() {
$('#dtSelect').val(5).change();
});
這似乎是工作,我將只是測試它在我的實際代碼是肯定的。只是一個頭你的jsfiddle無法正常工作我只是添加了建議改變我的自我。 – user262430
它完美的作品。如果你有機會可以解釋一下鱈魚,這樣我就可以瞭解下次遇到這種情況。 – user262430
太棒了。有關'event.currentTarget'的含義,請參閱http://api.jquery.com/event.currenttarget/。本質上,通過在'$('#dtSelect')。change'塊中添加'event.currentTarget === this'條件,我說只有在調用下拉值時纔會發生下一步。而不是當其他事件觸發相同的事件時 - 比如點擊列標題。 –