2011-07-03 3 views
3

내 페이지에 데이터 격자 (asp.net)가 있습니다. 첫 번째 열에 'foo'라는 단어가 있고 두 번째 열에 'bar'라는 단어가있는 행을 모두 선택하고 싶습니다.jQuery AND selector

첫 번째 열에 대해서만 수행 방법을 알고 있습니다.

jQuery('[id$="datagrid1"] tr td:contains(foo)') 

누구나 'bar'라는 단어가있는 두 번째 열의 조건을 포함시키는 방법을 알려주십시오.

편집 : 또한 정확히 어떻게 단어를 일치시킬 수 있습니까? 선택자 contains은 셀에 단어가 포함되어있는 경우와 일치합니다.

답변

6

선택기는 지금까지 당신을 얻을 next-sibling selector<td>가 첫 번째 열에에 인접한 두 번째 열을 가정 할 수 있습니다. 각각의 요소를 통해

jQuery('[id$="datagrid1"] tr').filter(function() { 
    return $('td:eq(0)', this).text() == 'foo' && 
     $('td:eq(1)', this).text() == 'bar'; 
}); 
  • .filter() 기능의 반복을하고 요소 (일치)을 유지해야하는지 여부를 나타냅니다 true 또는 false를 반환 할 것으로 예상 : 큰 유연성을 .filter()을 사용합니다.
  • :eq() 선택기를 사용하면 일치하는 집합 내의 색인을 선택할 수 있습니다. 이처럼
+0

jerluc의 제안을 시도했는데이 코드가 작동하는 것처럼 보입니다. 'jQuery ('[id $ = "datagrid1"] trtd : contains (foo) + td : contains (bar) ')' – StarCub

+0

@StarCub 당신이 말했듯이, 정확하게 단어와 일치하지 않을 것입니다. 또한 1 열과 2 열만 엄격하게 살펴 보지 않습니다. 열이 더 많은 경우 2 열과 3 열 등과도 일치 시키려고합니다. –

+0

아, 알겠습니다. 고맙습니다. – StarCub

3

:

jQuery('[id$="datagrid1"] tr').filter(function(){ 
    var $tds = $(this).find("td"); 
    return ($tds.eq(0).text()=="foo" && $tds.eq(1).text()=="bar"); 
}); 

동일한 코드보다이 원하는 조건에 맞는 <tr>의 집합을 반환

$trs = jQuery('[id$="datagrid1"] tr').filter(function(){ 
    var $first_td = $(this).find("td").eq(0); //First column 
    var $second_td = $(this).find("td").eq(1); //Second column 
    return ($first_td.text()=="foo" && $second_td.text()=="bar"); //Condition to filter 
}); 

'설명'.

희망이 도움이됩니다. 건배

+0

당신의 대답에 감사드립니다. 하나의 답변 만 선택할 수 있으며 @ Box9가 먼저 대답했습니다. – StarCub