Фильтр, использующий событие jQuery onChange, фильтрует заголовок таблицы, а не только тело таблицы.

0

Я использую следующий код в качестве фильтра, но каждый раз, когда я ищу что-то, он идет по строкам, а голова таблицы исчезает. Как я могу заставить его искать информацию только в теле и держать голову?

<script>
$('#inputFilter').change(function() {
        var that = this;
        $.each($('tr'),
        function(i, val) {
            if ($(val).text().indexOf($(that).val()) == -1) {
                $('#data_fm_op').animate({
                    marginTop: 0
                },
                50,
                function() {
                    $(this).find('tr').eq(i).hide();
                });
            } else {
                $('#data_fm_op').animate({
                    marginTop: 0
                },
                50,
                function() {
                    $(this).find('tr').eq(i).show();
                });
            }
        });
    });
    </script>

inputFilter - это идентификатор входа фильтра, а data_fm_op - идентификатор таблицы.

  • 1
    Измените ваш селектор, чтобы смотреть только строки в теле: tbody > tr , или пропустите строки, которые содержат th's : tr:not(:has(th))
Теги:
filter

2 ответа

3
Лучший ответ

Я рекомендую вам использовать <thead></thead> и <tbody></tbody> и запустить фильтр на $.each($('tbody tr')

0

можете ли вы разместить свой HTML-код, это поможет вам лучше ответить

попробуй это

<script>
$('#inputFilter').change(function() {
        var that = this;
        $.each($('tr'),
        function(i, val) {
            if ($(val).text().indexOf($(that).val()) == -1) {
                $('#data_fm_op').animate({
                    marginTop: 0
                },
                50,
                function() {
                     if(i != 0)
                        $(this).find('tr').eq(i).show();

                });
            } else {
                $('#data_fm_op').animate({
                    marginTop: 0
                },
                50,
                function() {
                    if(i != 0)
                        $(this).find('tr').eq(i).show();
                });
            }
        });
    });
    </script>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню