2012-10-17 4 views
0

안녕하세요, 주석 id 특정 텍스트 영역을 숨기고있는 코드를 표시하려고합니다.jquery 댓글 표시/숨기기 답글

페이지로드시 각 댓글에 텍스트 영역을 할당 한 다음 클릭시 숨기고 표시 할 수있었습니다. 그러나 나는 그들을 다시 숨기는 방법을 모른다. 이것은 내가 지금까지 가지고 올 한 것입니다 :

$('#show-reply-comment').each(function(){ 
    $(this).click(function(e){ 
     e.preventDefault(); 
     var commentid = $(this).data('commentid'); 
     $('#'+commentid+'').show(); 
     $(this).unbind('click'); 
     $(this).attr('id', 'hide-reply-comment'); 
    }); 
}); 

$('#hide-reply-comment').each(function(){ 
    $(this).click(function(e){ 
     e.preventDefault(); 
     var commentid = $(this).data('commentid'); 
     $('#'+commentid+'').hide(); 
     $(this).unbind('click'); 
     $(this).attr('id', 'show-reply-comment'); 
    }); 
}); 

사용자가 동시에 열 몇 가지 의견 회신 텍스트 영역을 가질 수 있어야한다. 누군가가 내게 계속하는 법에 대한 힌트를 줄 수 있다면 고맙겠습니다.

편집 : 나는 틀린 것을 잊었다; 하지만 코드를 엉망으로 만들고 싶지 않습니다.

답변

1

, 당신은 단순히 내가하여 버튼의 ID의 사용을 대체

$('.show-hide-reply-comment').click(function(){ 
    var commentid = $(this).data('commentid'); 
    $('#'+commentid).toggle(); 
}); 

참고하여 전체 코드를 대체 할 수 하나의 요소에만 Id를 부여 할 수 있기 때문에 "show-hide-reply-comment"클래스 사용.

+0

사용해 주셔서 감사합니다. – user1683645

3

jQuery #id 선택기는 첫 번째로 일치하는 요소 만 반환합니다.

일치하는 요소가 모두 반환되도록하려면 .class selector를 사용해야합니다. 대신 당신의 요소와 repetively 바인딩 및 바인딩 해제 이벤트 핸들러의 ID를 변경하려고의

+0

좋아요, 당신은 지금 무슨 뜻인지 이해합니다! – user1683645

1

앞에서 설명한 것처럼 #id는 고유해야합니다. 하지만 그것 jquery에 상대뿐만 아니라, 자바 스크립트에 상대. css 만 고유 ID 선택기를 신경 쓰지 않습니다. 이것은 물론 유효하지 않습니다 ...

관련 문제