2013-12-15 6 views
0

이 목록은 필터가 아니므로 필터 실행 전후의 길이가 같습니다. txtval 값이 정확합니다. 여기 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

TD에서 사용 들이게된다()하지 .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