0

我要对我的内容进行快速搜索;

我有以下 HTML 代码:

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

到我的搜索目标,并且#dynamicid 可以更改为任何东西;

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

当我尝试<li>使用 $.each() 获取 " " 元素时,被替换的元素返回 false;实际上我应该像 $.live(each,function(){}); 但没有什么像这个功能。 请求在另一个函数中,我试图通过 $.each
$.post获取元素;li例子 :

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

// do stuff.

});

当我通过 ajax 更改内容时,上面的代码不起作用。我应该怎么办?编辑:(我的这部分代码将不起作用,如果#myElm孩子删除或替换为其他任何内容。_

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

“对不起英语不好”

4

2 回答 2

0

$.post 对特定 url 进行异步 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防止异步请求

于 2013-07-21T05:11:52.313 回答
0

如果使用 jQuery > 1.7 则

$('#dynamic').on('click', 'li', function(){
    alert('clicked' + $(this).text())
})
于 2013-07-21T04:51:32.033 回答