从Ajax返回id生成的DOM元素

时间:2013-07-25 15:53:03

标签: javascript jquery html ajax

我知道有一个副本(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);
    });

4 个答案:

答案 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);
    });

使用最近的静态容器而不是文档作为委托目标会更好,但我不知道你的代码......

DEMO

答案 2 :(得分:0)

您可以使用load函数来从服务器中删除所有已加载的js。 请改用$("#id").load(<url>,<callback of success>);

http://api.jquery.com/load/

答案 3 :(得分:0)

ajax电话在哪里?它是如何构建的?

根据您的ajax调用,您可以将该函数放入回调中,然后它将附加到该元素。