1
$.each(data, function(i,data) {
...[cut]...
    +"<a id=\"contact_"+data.id+"_delete\" href=\"/user/contact/delete/ticket_id/"+data.ticket_id+"/contact_id/"+data.id+"\">Delete</a>"
...[cut]...
    $("#contact_"+data.id+"_delete").live('click',function() {
        var href = this.attr('href');
        alert(href);
        return false;
    });

我有以下代码示例(为简单起见,删除了不相关的部分)。我所拥有的是一个重绘表格行(tr's)的函数。每行在调用 url /user/contact/delete/ticket_id/{$ticket_id} 的行末尾都有一个“删除”链接

然后(在同一个循环中),我想将点击事件绑定到新创建的链接。但是,当我单击链接时,浏览器会离开页面并转到 url,而不是转到单击的链接功能。

首先,我是否正确绑定了点击事件?

其次,我是否正确检索了元素的“href”属性?

4

2 回答 2

3

除了@charlietfl所说的之外,您可以为所有删除元素设置一个处理程序。只需将相同的类添加到所有这些类中,例如class="contact_delete",然后使用.on()来定位所有这些类:

+'<a class="contact_delete" id="contact_'+data.id+'_delete" ...

请注意,如果您使用单引号,则不必转义所有双引号。

$('body').on('click', '.contact_delete', function() {
    var href = $(this).attr('href');
    alert(href);
    return false;
});
于 2012-03-07T21:36:47.993 回答
2

您需要将“this”包装在 $() 中以使其成为 jQuery 对象才能使用 jQuery 方法

 var href = $(this).attr('href');

live() 已被弃用(但在 1.7.1 中工作),因此您应该考虑使用更新的 on() 方法

于 2012-03-07T21:17:51.287 回答