2017-09-29 10 views
1

테이블 열에 대한 내 검색이 항상 첫 번째 행과 그 이후의 일치하는 행을 표시하는 이유를 이해하는 데 어려움이 있습니까? 키워드가 1 행의 셀과 일치하지 않더라도 항상 맨 위에 표시됩니까? 내 코드를 여러 번 살펴보고 다른 방법을 시도했지만 여전히 첫 행을 숨기지 않습니까?테이블의 첫 번째 행을 숨기지 않는 Jquery 검색

여기 내 작업 코드

$('#filterbyname').on("keyup", function() { 
     var val = $(this).val(); 
     var matches = $("table.bill tr:not(:first-of-type)"); 

     matches.each(function (i,e) {    
      debugger; 
      $row = $(this);     
      $cells = $row.find("td:nth-child(2)"); 

      $cells.each(function (i2, e2) { 
       var cell = $(this).text(); 
       debugger; 
       $row.toggle(cell.indexOf(val) >= 0);    
      }); 
     }); 
}); 

cell.indexOf(val) >= 0) 다음이 일치하는 행을 따라 전환 할 경우 위의 코드에서 볼 수있다.

제안 사항을 알려주십시오. 모든 행이 첫 번째를 기대할 선택 tr:not(:first-of-type)를 사용하는 당신의 matches 변수 사실

+2

그것은 그럴'때문입니다 (: 최초의 형)'. –

답변

3

:not 선택들은, 그래서 부모의 첫 번째 자식없는 즉, 여기 :first-of-type과 일치하는 모든 요소를 ​​배제하기 때문에 먼저 tr은 무시됩니다.

변경이 코드 : 다음

var matches = $("table.bill tr:not(:first-of-type)"); 

는 :하지 :

var matches = $("table.bill tr"); 
+1

': not (: first-of-type)'이 헤더를 없애려면'$ ("table.bill> tbody> tr")' –

+0

@ freedomn-m을 사용하십시오. OP에서 'tr'을 가진'thead '. –

+0

@chsdk 치료를 해주셔서 감사합니다. 위에서 자유가 지적했듯이 헤더를 없애기 위해 거기에 있었다. – Kevin