2010-01-14 1 views
0

tutorial on IBM's website은 jQuery, PHP 및 Ajax를 사용하여 간단한 검색/결과 목록을 통해 나를 걸어 왔습니다. jQuery, PHP 및 Ajax 문제 : 동적 링크를 동적 링크로로드 할 수 없습니다.

나는 그것이 작동되도록 할 수 있었다 그것은 정말 멋진입니다.

하나의 문제. 결과가 하이퍼 링크가되고 결과에서 실행되는 자바 스크립트를 가져올 수 없습니다.

<script type='text/javascript'> 
$(document).ready(function(){ 
$("#search_results").slideUp(); 
$("#search_button").click(function(e){ 
e.preventDefault(); 
ajax_search(); 
}); 
$("#search_term").keyup(function(e){ 
e.preventDefault(); 
ajax_search(); 
}); 
$("a").click(ClickInterceptor); 
}); 

function ajax_search(){ 
$("#search_results").show(); 
var search_val=$("#search_term").val(); 
$.post("./find.php", {search_term : search_val}, function(data){ 
if (data.length>0){ 
$("#search_results").html(data); 
} 
}) 
} 

function ClickInterceptor(e) 
{ 
window.alert("Hellow World!"); 
return false; 
} 
</script> 

내가 <body> 태그 아래에 다음과 같은 HTML을 넣을 경우 : 여기

는 (동작을 클릭 튜토리얼 플러스 하이퍼 링크를 ovverride하는 데 필요한 추가 스크립트에 무엇이 포함) 내가 가지고있는 스크립트가

경고 창이 표시됩니다
<a href="test">this will work</a> 

. 나는 (튜토리얼에서 7 목록 find.php에서 발견) 하이퍼 링크에 결과를 변경하는 경우

그러나 :

$string .= "<a href=\"test\">".$row->name."</a> - "; 

이 작동하지 않습니다.

이 문제를 해결하는 방법에 대한 아이디어가 있으십니까? 이 실행될 때

답변

2

click 기능을 결합한다. 당신은 live binding로 변경해야합니다.

$("a").live("click", ClickInterceptor); 

아니면 $("#search_results").html(data) 후 다음으로 바꾸어 검색 결과를 업데이트 할 때 당신은 단지 그것을 바인딩 할 수 있습니다 :

$("#search_results a").click(ClickInterceptor); 
+0

글쎄, 분명히, 나는 투표하기에 충분한 명성이 없다. 그러나 라이브 바인딩을 바꾸는 것이 트릭을 만들었습니다. 다른 사람들도 그렇게 할 것이라고 확신합니다. tyvm! – ray

0

문제는 실제로 $("a").click(ClickInterceptor);는 현재에 존재하는 항목을 찾습니다 아주 간단합니다 DOM. 나는 또한 jQuery's Events/live에 대한 자세한 내용을 읽을 시간을내어 좋을 걸

$("a").live("click", ClickInterceptor); 

: 당신이해야 할 모든이에 그 줄을 변경합니다.