我要快速搜索我的内容;
我有以下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);
});
当我尝试使用$ .each()获取“<li>
”元素时,被替换的元素返回false;
实际上我应该像$ .live(each,function(){});但没有像这个功能。
$.post
请求在另一个函数中,我试图通过$ .each获取li
个元素;
例如:
$("li").each(function(){
// do stuff.
});
当我通过ajax更改内容时,上面的代码无效。
我该怎么办?
编辑:(我的代码的这一部分不起作用,如果#myElm
的孩子删除或替换其他任何东西._
$("#dynamic").find("li").each(function(){
// do stuff
});
“抱歉可怜的人”
答案 0 :(得分:0)
如果jQuery&gt;然后使用1.7
$('#dynamic').on('click', 'li', function(){
alert('clicked' + $(this).text())
})
答案 1 :(得分:0)
$。发布对特定网址的异步ajax调用 我想你正在尝试对尚未加载的内容进行处理。 使用同步请求或完成功能
$.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.
});
将您的代码更改为
$.post("ajax.php", { sort:$(this).val() }).done(function(data) {
$("#dynamic").html(data);
$("li").each(function(){ //on updation of $("#dynamic") by asynchronous request
// do stuff.
});
});
或者使用$ .ajax
的同步请求 $.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.
});
async:false 阻止异步请求