2013-07-21 219 views
0

我將在我的內容上創建一個快速搜索;jQuery動態內容

我有以下的HTML代碼:

<ul id='dynamic'> 
<li data-c='a'></li> 
<li data-c='b'></li> 
<li data-c='c'></li> 
</ul> 

我的搜索目標,並#dynamic ID可以改變任何東西;

$.post("ajax.php", { sort:$(this).val() }).done(function(data) { 
$("#dynamic").html(data); 
}); 

時,即時通訊嘗試使用$。每(),被替換的元素返回false獲得 「<li>」 元素;其實我應該像$ .live(each,function(){});但沒有這個功能。
$.post請求是在另一個函數中,我試圖通過$ .each得到li元素; 例如:

$("li").each(function(){ 

// do stuff. 

}); 

當我通過AJAX改變的內容上述不工作的代碼。 我該怎麼辦? 編輯:(我的這部分代碼將不會如jQuery的> 1.7則使用工作,如果#myElm的孩子刪除或用別的代替_

$("#dynamic").find("li").each(function(){ 
// do stuff 
}); 

+0

的'。每防止()''就像'$(「li」)循環一樣,每個(...)將循環任何存在的li元素循環運行的時間,而不管元素是否是動態創建的。我不知道你的意思是「被替換的元素返回false」,但是請顯示更多不起作用的代碼,並解釋它從哪裏調用(以及何時)。 – nnnnnn

+0

你想要一個點擊事件處理程序也是使用jQuery版本 –

+0

我認爲新元素「'li'」是循環和'每個'不工作 –

回答

0

‘專爲ENG差對不起’。

$('#dynamic').on('click', 'li', function(){ 
    alert('clicked' + $(this).text()) 
}) 
0

$。員額進行異步Ajax調用特定的URL 我認爲你正在嘗試做的每一對尚未加載的內容。 使用同步請求,或做你的東西中完成的˚F結

$.post("ajax.php", { sort:$(this).val() }).done(function(data) { // asynchronous request 
$("#dynamic").html(data); 
}); 

$("li").each(function(){ // but $("#dynamic") is not yet updated by ajax due to asynchronous request 

// do stuff. 

}); 

由$就

$.ajax({url:"ajax.php", data:{ sort:$(this).val() },async:false,type:"post", 
    success:function(){ 
    $("#dynamic").html(data); 
     }}); 

$("li").each(function(){ //on updation of $("#dynamic") by sync request 

     // do stuff. 

     }); 

異步代碼更改爲

$.post("ajax.php", { sort:$(this).val() }).done(function(data) { 
    $("#dynamic").html(data); 

    $("li").each(function(){ //on updation of $("#dynamic") by asynchronous request 

    // do stuff. 

    }); 
    }); 

或者使用同步請求:假從異步請求

+0

這些是我使用的兩個不同的函數,'$(「li」)。each()'在請求後運行。 –