상황: jQuery+ajax로 게시판을 만들고 있습니다. 새 글 쓰기나 글에 리플달기는 어렵잖게 구현했는데, 새 글 쓰기로 방금 써진
갓 나온 글에 리플 달기가 안 됩니다! T_T!!
추측: .prepend()를 통해 DOM Insertion된 html code 부분은 jQuery의 selector가 체크를 못 해주는것 같습니다ㅠㅠ
해결: .live() 메서드를 사용하면 됩니다.
심화 상황:
1)새 글을 쓰거나 글에 리플을 달거나 하면, .prepend() 메서드를 통해서 곧바로 갱신해주고 있습니다. 예를 들자면 이렇게요.
$($talkboard).children(\'ul\').prepend(\"<ul><li><input type=text size=50 maxlength=50><input type=submit></li></ul>\");
$($talkboard).children(\'ul\').prepend(\"<li>\"+$myid+\": \"+$text+\"</li>\")
뭐... 당연한거죠?;; 근데 문제는 요 다음부터입니다.
2) 저렇게 .prepend()로 DOM Insertion을 원하는데로 한 것까진 좋은데요, 문제는 요 다음입니다.
저렇게 써진 글에다가도 리플을 달 수 있어야 하잖아요? 그래서 저 submit 버튼도 버튼이 눌렸음을 체크해주고 싶은데..
$($comment_input).find(\'input:submit\').click(function() {
//생략
});
요게 저렇게 새로 DOM Insertion해준 submit 버튼에서는 안 먹히는 것이었습니다 ㅠㅠ
제가 selector를 잘못 썼나 싶어 좀 러프하게 테스트 코드도 하나 넣어봤는데요,
$(\'input:submit\').click(function() {
alert(\"무언가의 버튼 눌렸긔~\");
} );
이것도 안 먹힙니다 T_T
물론 다른 버튼에서는 저 alert()뜨는데요,
오직, .prepend()를 통해 방금 DOM Insertion해준 submit 버튼에서만 안먹힙니다 T_T
jQuery의 원활한 정상 작동을 위해 $(document).ready(function() {} 안에 jQuery 코드를 넣어준것이 문제인가 싶어서 밖으로 꺼내보니 이건
아예 작동 안 하고.. 이를 어쩌면 좋을까요 ㅠㅠ
그러니까 한마디로 jquery를 이용해서 새로 만든 버튼은 인식을 못한다 이거 아님? 그래서 해당 버튼에 이벤트를 줄려고 해도 안되고.. 뭐 이럴땐 편법으로 임의로 버튼을 미리 만들어놓고, 새로글이 써지면 해당 버튼을 새글에 이어주는식으로 하면 안됨?
에이 그러면 DOM Insertion의 의미가 없죠 ㅎㅎ;;;;;; 리플 감사합니다 ^^ // .live() 메서드로 해결 봤습니다. 구글로 검색하니 어떻게든 나오는군요;;
ㄴㅎㅎㅎ .live() 지금 검색중에 여기에 도달했었는데.. 이미 해결했다니 잘됬군요 ㅋㅋㅋㅋㅋㅋㅋ
감사합니다ㅎㅎ