我知道有一个副本(jQuery: How to get ID of dynamically generated element?),但我尝试了解决方案而无法解决我的问题。
ajax / jquery查询返回了一个表,在检查时返回一个正确形成的表:
<table border="1">
<tbody>
<tr><td>Example</td><td class="del" id="1">Delete</td></tr>
<tr><td>Example2</td><td class="del" id="2">Delete</td></tr>
</tbody>
</table>
jquery代码是:
$('.del').click(function(){
var id = $(this).attr("id");
alert(id);
});
如果我将表直接放在HTML中,它可以正常工作,但是当它从ajax生成时它甚至不会生成警报(并且chrome不会返回错误)。
请注意,如果这是一个愚蠢的名字,比如一个名不副实的内容,我会事先道歉,但我一直试图将这个问题解决了3/4小时并且卡住了!
ajax调用是:
$.ajax({type : 'POST', url : 'response.php'}).done(function(response){
$('#result').html(response);
});
答案 0 :(得分:2)
重写您的javascript,如下所示
$(document).on("click", ".del", function(){
var id = $(this).attr("id");
alert(id);
}); // jQuery 1.7+
详情请参阅以下文章 http://api.jquery.com/on/
答案 1 :(得分:1)
这是使用委托,我建议使用它而不是为每个新创建的元素设置多个处理程序。
$(document).on('click','.del',function(){
var id = this.id;
alert(id);
});
使用最近的静态容器而不是文档作为委托目标会更好,但我不知道你的代码......
答案 2 :(得分:0)
您可以使用load函数来从服务器中删除所有已加载的js。
请改用$("#id").load(<url>,<callback of success>);
答案 3 :(得分:0)
ajax电话在哪里?它是如何构建的?
根据您的ajax调用,您可以将该函数放入回调中,然后它将附加到该元素。