фильтрация списка строк таблицы с помощью jQuery

0

Этот список не является фильтром, я получаю ту же длину до и после выполнения фильтра. Значения txt и val верны.

$("#filter").on('keyup', function(e){
  var val = this.value.toLowerCase();

  c.log('trs', $trs.length);
  $trs.filter(function(i){
    var $el = $(this).find('td:nth-child(2) a')
      , txt = $el.text().toLowerCase();

    //c.log('test', txt, val);
    return !!txt.indexOf(val);
  });

  c.log('trs', $trs.length);
});

Вот HTML:

<tr>
    <td class="numeric"><a id="btc" class="rank">1</a></td>
    <td>
        <img src="img/Bitcoin.png" class="currency-logo">
        <a href="http://www.bitcoin.org" target="_blank">Bitcoin</a>
     </td>
</tr>
<tr>
    <td class="numeric"><a id="ltc" class="rank">2</a></td>
    <td>
         <img src="img/Litecoin.png" class="currency-logo">
         <a href="http://litecoin.org" target="_blank">Litecoin</a>
    </td>
</tr>
  • 0
    в тд использовать .html () не .val (). try alert (val) // я не думаю, что он вернет данные.
  • 0
    пожалуйста, разместите соответствующий HTML и дайте больше объяснений.
Показать ещё 1 комментарий
Теги:

1 ответ

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

Вы только предположили, что filter будет выполнять модификации исходного объекта. Но это не так. Он фактически возвращает набор filtered elements на основе условия, содержащегося внутри него. Подробнее об этом читайте здесь.

Попробуй это,

$("#filter").on('keyup', function(e){

     var val = this.value.toLowerCase();    
     c.log('trs', $trs.length);

     c.log('trs',   $trs.filter(function(i){
       var $el = $(this).find('td:nth-child(2) a');
       var txt = $el.text().toLowerCase();
       return txt.indexOf(val) > -1;
     }).length;
   );

});
  • 0
    Это было то, что я должен был переназначить это.

Ещё вопросы

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