-1

我知道有一个重复(jQuery:如何获取动态生成元素的 ID?),但我尝试了解决方案,但无法解决我的问题。

一个 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 不会返回错误)。

注意,如果它是像错误命名的 id 这样的愚蠢行为,我会提前道歉,但我已经尝试了 3/4 小时并被卡住了!

编辑:

ajax 调用是:

$.ajax({type : 'POST', url : 'response.php'}).done(function(response){
        $('#result').html(response);
    });
4

4 回答 4

2

重写你的javascript如下

$(document).on("click", ".del", function(){ 
var id = $(this).attr("id");
alert(id);
 });        // jQuery 1.7+

详细请参考以下文章 http://api.jquery.com/on/

于 2013-07-25T16:01:04.390 回答
1

这是使用委托,我建议使用它而不是为每个新创建的元素设置多个处理程序。

$(document).on('click','.del',function(){
        var id = this.id;
        alert(id);
    });

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

演示

于 2013-07-25T15:58:25.983 回答
0

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

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

于 2013-07-25T15:57:50.543 回答
0

ajax调用在哪里?它的结构如何?

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

于 2013-07-25T15:58:48.887 回答