簡體   English   中英

jQuery,php和Ajax問題:無法使動態鏈接加載動態內容

[英]jQuery, php and Ajax issue: Can't make dynamic link load dynamic content

IBM網站上有一個很棒的教程,它引導我使用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> - "; 

這是行不通的。

關於如何解決此問題的任何想法?

click功能在運行時綁定。 您需要將其更改為實時綁定

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

或者,您也可以在更新搜索結果時將其綁定,方法是將以下內容放在$("#search_results").html(data)

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

這個問題實際上很簡單, $("a").click(ClickInterceptor); 將僅查找DOM中當前存在的項目。 您需要做的就是將該行更改為此:

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

我還建議您花些時間閱讀有關jQuery的Events / live的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM