자바스크립트 초보 질문입니다..ㅠㅠ

조회수 846회

정말 기초적인 질문 죄송합니다ㅠㅠ

tbody안에 tr이 두개씩있는 태그들이 여러개가 있습니다. 여기서 tbody안에 첫번째 tr의 a를 누르면 두번째 tr이 나오는 형식입니다. 계속 다른 tbody의 tr도 같이 나오더라구요... 어떻게 해결해야할지 모르겠어요ㅠ

$('a의 classname').click(function()
$(this).parents().find('tr:nth-child(2)').slideToggle();
)};
  • (•́ ✖ •̀)
    알 수 없는 사용자

2 답변

  • 원하시는 것은 .each()일 겁니다. 이 메소드는 그 셀렉트 조건에 해당하는 개체 각각이 같은 동작을 별개로 해야 할 때 사용합니다. 공식문서

    $('a의 classname').each(function(){
        $(this).click(function(){
            // 클릭된 a를 가진 tr은 첫번째 tr이고 그 다음에 나오는 tr을 .slideToggle()해야 하니까...
            $(this).parents('tr').next().slideToggle();
        });
    });
    

    이렇게 하면 지금처럼 뭐 하나 눌렀다고 다같이 동작하는 대신 각각이 따로 동작을 할 겁니다. 시도해 보세요.

    • 해결했습니다~ 너무 감사합니다ㅠㅠ 알 수 없는 사용자 2018.10.25 09:35
    • 아코디언메뉴처럼 되더라구요 혹시 다른 a를 눌렀을때 이미 눌린 a의 tr를 올릴수있는 방법은 있을까요? 알 수 없는 사용자 2018.10.25 09:57
    • 힌트: 수많은 a중 하나가 눌리면 (1) 일단 모든 a들의 tr을 접고 (2) 방금 눌린 a의 tr만 펼칩니다. 엽토군 2018.10.25 10:10
  • 원하는 tbody가

    첫 번째꺼라면

    $('tbody:first').find('a의 classname').click( /*blar blar*/ );
    

    n 번째꺼라면

    // 주의:
    // 0이 첫 번째, 1이 두 번째 매칭된 Element를 의미
    $('tbody:eq(n)').find('a의 classname').click( /*blar blar*/ );
    
    // 따라서 두 번째 매치된 tbody의 a를 가져오려면
    $('tbody:eq(1)').find('a의 classname').click( /*blar blar*/ );
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)