2010-01-14 76 views
0

有一個偉大的tutorial on IBM's website,它通過使用jQuery,PHP和Ajax的簡單搜索/結果列表走過了我。jQuery,php和Ajax問題:無法使動態鏈接加載動態內容

我能夠使它工作,它真的很酷。

一個問題。我想要結果是超鏈接,我不能得到任何Java腳本來運行結果。

這裏是腳本我有(包括什麼在本教程加上必要ovverride超鏈接的其他腳本,單擊行爲):

<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> 

如果我把下面的HTML的<body>標籤下:

<a href="test">this will work</a> 

這將顯示警報窗口。

但是,如果我改變的結果,超鏈接(在find.php發現,從教程清單7):

$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 2010-01-14 03:51:28

0

的問題其實很簡單,$("a").click(ClickInterceptor);只會查找當前存在於項目DOM。所有你需要做的是改變該行這樣的:

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

我還告訴抽出時間來閱讀更多關於jQuery's Events/live