Jquery单击绑定第二次不起作用

时间:2013-02-07 23:10:54

标签: jquery click bind href

我的aimg标签内部有一种奇怪的行为。

我有一个带有表的php页面,这是一个记录列表。 在每一行的末尾,我都有一个删除行的按钮。

这是我的表格代码:

<div class='edit' >
    <a id='20' href='#' return;>
        <img src='images/edit.png'  />
    </a>
</div>

主表的每一条记录,每一行都有上面的代码,彼此不同。

我的脚本代码是:

$("#delete a").click(function(e) {

e.preventDefault();

$('#action').val("delete");
$('#keyAction').val(this.id);

$.ajax({
        type: "POST",
        url: "processAttivita.php",
        data: $("#attivita_form").serialize(),
        error: function(msg) {
            $("#errore").html(msg);
        },
        success: function(msg) {
            // display the errors returned by server side validation (if any)
            ricaricaLista();                

        }
    });     

 // end click delete event  
 });

第一行我尝试删除点击图片工作正常。 在第二个似乎jquery不绑定“click”事件并且a元素的默认href发生,由于href属性中的“#”而保留在同一页面上。

为什么第二次jquery没有拦截的任何想法点击<a>元素?

1 个答案:

答案 0 :(得分:5)

您正在使用ID选择器#delete a,它只匹配一个(通常是第一个)元素。

尝试使用类,例如.delete a

你只获得一个元素的原因是因为JQuery优化了以#开头的任何选择器传递给document.getElementById,它只返回1个元素。

以下是如何使用事件委派来实现相同目标的示例:

$("#tableid").click(".delete a", function(e) {
    // your code
});

你的html需要在你的桌子上有一个ID,并将class="delete"提供给删除链接的容器。