본문 바로가기

프로그래밍/jQuery

[jQuery] ajax로 불러온 엘리먼트의 이벤트가 작동되지 않을 때 해결방법

반응형

 

 

 

ajax로 불러온 엘리먼트의 이벤트가 작동되지 않을때 해결 방법

 

<script>
...
	$("#chk_id").click(function (e) { console.log("check!!"); });
...
</script>
...
<div id="student_list">
	<input type="checkbox" id="chk_id" />
	<div>ggmouse</div>
</div>

 

위의 코드는 정상적으로 작동이 된다.

 

그러나! ajax사용 후 불러온 후의 클릭이벤트가 동작하지 않는다. 즉, 아래와 같은 경우를 봐보자

 

<head>
<script type="text/javascript" src="/js/jquery.tmpl.js"></script> 
<script type="text/javascript"> 
	$(function () {
		// 작동이 안돼....
		$("#chk_id").click(function (e) { console.log("check!!"); });
	});

	// 리스트에 입힐 json 타입 데이터 
	var student = [{ Name: "ggmouse" }]; 

	// 데이터 바인딩 
	var tmpl = $("#studentTemplate").tmpl(student);
	$("#student_list").html(tmpl);
</script> 

// 리스트에 출력할 템플릿 
<script id="studentTemplate" type="text/x-jquery-tmpl"> 
	<input type="checkbox" id="chk_id" />
	<div>${Name}</div> 
</script> 
</head> 
<body> 
	<div id="student_list"></div> 
</body>

 

 

 

해결방법

 

$("#chk_id").click(function (e) { console.log("check!!"); });

 

코드가 위와같이 작성되어 있다면, 아래와 같이 바꿔보자

 

$(document).on("click", "#chk_id", function (e) { console.log("check!"); });

 

 

 

완성 코드

 

<head>
<script type="text/javascript" src="/js/jquery.tmpl.js"></script> 
<script type="text/javascript"> 
	$(function () {
		// 정상 작동
		$(document).on("click", "#chk_id", function (e) { console.log("check!"); });
	});

	// 리스트에 입힐 json 타입 데이터 
	var student = [{ Name: "ggmouse" }]; 

	// 데이터 바인딩 
	var tmpl = $("#studentTemplate").tmpl(student);
	$("#student_list").html(tmpl); 
</script> 

// 리스트에 출력할 템플릿 
<script id="studentTemplate" type="text/x-jquery-tmpl"> 
	<input type="checkbox" id="chk_id" />
	<div>${Name}</div> 
</script> 
</head> 
<body> 
	<div id="student_list"></div> 
</body>

 

 

 

 

반응형