Programming/JavaScript
자바스크립트 li태그 선택 - 실시간 댓글 삭제
Chanho.
2020. 3. 18. 01:08
반응형
// template pug 사용
// comment.pug 예시
ul#jsCommentList // ul태그의 id는 jsCommentList
each comment,index in video.comments // db에서 comment(댓글) 가져옴
li(data-index=index) // index를 줄 수도 있음
span = comment.text // comment db에 저장된 댓글 내용
button.comment-delete 삭제
button.comment-modify 수정
// 위의 each문으로 생성된 comment 예시 문
ul#jsCommentList
li
span = "첫 번째 댓글"
button.comment-delete 삭제
button.comment-modify 수정
li
span = "두 번째 댓글"
button.comment-delete 삭제 <- 너를 선택해서 삭제하고 싶다
button.comment-modify 수정
li
span = "세 번째 댓글"
button.comment-delete 삭제
button.comment-modify 수정
위와 같이 있다고 가정하여 두 번째 댓글의 button을 선택하여 ajax 등을 이용하여 삭제하고 싶다하면 방법은 간단하다.
const commentList = document.getElementById("jsCommentList")
function deleteComment(li) {
commentList.removeChild(li)
}
function handleDelete(event) {
// 가져온 li 선택하여 하고자하는 기능 만들면 됩니다.
// 예를 들어 선택한 li태그를 ajax를 이용하여 선택한 댓글을 DB에서 삭제처리하고 실시간으로 선택한 li 태그를 삭제하고싶다면
const li = event.target.closest('ul') 이런식으로 삭제하려는 li 전체 태그를 받아와 삭제시킬 수 있음
deleteComment(li)
}
fucntion init() {
const deleteComment = document.getElementByClassName("comment-delete")
for( var i=0; i< deleteComment.length; i++) {
commentList[parseInt(i)].addEventListener('click' , handleDelete)
}
}
if(commentList) {
init()
}
deleteComment라는 변수에 comment-delete 클래스를 getElementByClassName을 이용하여 가져옴
반복문으로 내가 선택한 button에 "click" 이벤트가 발생했을 때, listener 실행( 함수 실행 )