2013-12-15 2 views
0

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

$("#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 и дайте несколько объяснений. –

+0

Я не использую '.val()'. Я отправил html. – chovy

ответ

1

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

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

$("#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

Вот что я должен был переписать. – chovy

Смежные вопросы