Сохраняя .each
(где использовалось .fitler
) - измените ваш jquery на:
$('#choice').change(function() {
var value = $(this).val().toLowerCase();
$("#dt-answer tr").each(function() {
$(this).toggle($(this).find(">td[data-id]").data("id") == value > -1)
});
})
Внутри .toggle
:
.find
ищите потомков (из this
, то есть tr
), которые соответствуют
">td[data-id]"
прямые потомки, которые td
и имеют идентификатор данных
.data("id")
получить идентификатор и сравнить с value
Существуют различные альтернативы
.find(">td[data-id]")
например, используя .children()
или td:eq(2)
для 3-го столбца.
В этом случае нет необходимости в .each
(/ .filter
), и изменение многих элементов DOM в цикле может привести к замедлению работы вашего приложения. Вы можете использовать:
$('#choice').change(function() {
var value = $(this).val().toLowerCase();
$("#dt-answer tr").hide().has(">td[data-id=" + value + "]").show();
})