jQuery, php ve Ajax sorunu: dinamik bağlantı yük dinamik içerik yapamaz

2 Cevap php

Büyük tutorial on IBM's website jQuery, PHP ve Ajax ile basit bir arama / sonuçları listesinden aracılığıyla bana yürüdü var.

Ben o iş yapmak başardı ve gerçekten serin.

Bir sorun. Ben sonuç köprüler olmak istiyorum ve ben herhangi bir java script sonuçları çalıştırmak için alınamıyor.

İşte var komut (öğretici artı köprüyü ovverride için gerekli ek komut ne içerir, davranış tıklayın) olduğunu:

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

I <body> etiketi altında aşağıdaki html koyarsanız:

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

Bu uyarı penceresi görüntülenir.

Ancak, (find.php, listing 7 öğretici bulunan) köprülere sonuçları değiştirmek eğer:

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

Bu çalışmıyor.

Bunu düzeltmek konusunda herhangi bir fikir?

2 Cevap

Çalıştırıldığında click function bağlar. Bir live binding bunu değiştirmeniz gerekir.

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

Yoksa sadece size sonra aşağıdaki koyarak arama sonuçlarını güncelleştirmek zaman bağlamak $("#search_results").html(data) yapabilirsiniz:

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

Sorun aslında oldukça basittir, $("a").click(ClickInterceptor); şu anda yalnızca DOM mevcut öğeleri arar. Yapmanız gereken tüm bu çizgiyi değiştirmek olduğunu:

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

Ben de jQuery's Events/live hakkında daha fazla okumak için zaman ayırdığınız tavsiye ediyorum.