$(t).html()
보고
<td>test1</td><td>test2</td>
나는 두 번째 검색하려는 td
로부터 $(t)
객체를. 나는 해결책을 찾았지만 아무것도 효과가 없었다. 두 번째 요소를 얻는 방법에 대한 아이디어가 있습니까?
답변
둘째 아이를 잡아 :
$(t).children().eq(1);
또는 두 번째 아이를 잡으십시오 <td>
.
$(t).children('td').eq(1);
답변
다음은 코드에서 더 명확하게 읽을 수있는 솔루션입니다.
순서없는 목록의 두 번째 자식을 얻으려면 :
$('ul:first-child').next()
보다 정교한 예 :이 코드는 ‘my_list’로 식별 된 UL의 두 번째 하위 요소에 대한 ‘title’속성의 텍스트를 가져옵니다.
$('ul#my_list:first-child').next().attr("title")
이 두 번째 예에서는 ID가 단일 페이지에 고유해야하므로 선택기 시작시 ‘ul’ 을 중복 제거 할 수 있습니다 . 예제에 명확성을 추가하기 위해 있습니다.
성능 및 메모리 에 대한 참고 사항 에서이 두 예제는 jquery 가 나중에 필터링 해야하는 ul 요소 목록을 저장하지 않으므로 성능이 뛰어납니다 .
답변
어때:
$(t).first().next()
주요 업데이트 :
답이 얼마나 아름답게 보일지에 관계없이 코드 성능에 대해서도 고려해야합니다. 따라서 $(t)
변수에 정확히 무엇이 있는지 아는 것도 중요 합니다. 그것의 배열 <TD>
또는 그것은이다 <TR>
몇 가지와 노드 <TD>s
내부 그것? 요점을 더 자세히 설명하려면 <ul>
50 <li>
명의 자녀가 있는 목록 에서 jsPerf 점수를 참조하십시오 .
http://jsperf.com/second-child-selector
이 $(t).first().next()
방법은 지금까지 가장 빠릅니다.
그러나 반면에 <tr>
노드 를 가져 와서 하위를 찾고 <td>
동일한 테스트를 실행하면 결과가 동일하지 않습니다.
도움이 되길 바랍니다. 🙂
답변
여기에 언급되지 않았지만 CSS 사양 선택기를 사용할 수도 있습니다. 문서를 참조하십시오
$('#parentContainer td:nth-child(2)')
답변
이 시도:
$("td:eq(1)", $(t))
또는
$("td", $(t)).eq(1)
답변
jQuery 메소드를 사용하는 것 외에도 제공 하는 기본 cells
콜렉션을 사용할 수 <tr>
있습니다.
$(t)[0].cells[1].innerHTML
t
DOM 요소 라고 가정하면 jQuery 객체 생성을 무시할 수 있습니다.
t.cells[1].innerHTML
답변
아무도 네이티브 JS 방법을 언급하지 않았다는 것은 놀라운 일입니다.
jQuery없이 :
부모 요소 의 children
속성 에 액세스하십시오 . 인덱스로 액세스 할 수있는 자식 요소 의 라이브 HTMLCollection 을 반환합니다 . 두 번째 자녀를 얻으려면 :
parentElement.children[1];
귀하의 경우 다음과 같이 작동 할 수 있습니다 : (예)
var secondChild = document.querySelector('.parent').children[1];
console.log(secondChild); // <td>element two</td>
<table>
<tr class="parent">
<td>element one</td>
<td>element two</td>
</tr>
</table>
또한 CSS3 셀렉터의 조합을 사용 / 수 querySelector()
및 활용 :nth-of-type()
. 이 경우에는 요소 유형을 지정할 수도 있기 때문에이 방법이 더 나은 경우가 있습니다 td:nth-of-type(2)
(예).
var secondChild = document.querySelector('.parent > td:nth-of-type(2)');
console.log(secondChild); // <td>element two</td>