2

我有一个奇怪的行为,里面aimg标签。

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

这是我的表的代码:

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

主表的每条记录,每一行,都有上面的代码,id互不相同。

我的脚本代码是:

$("#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>元素的任何想法?

4

1 回答 1

5

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

尝试使用一个类,例如.delete a.

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

这是一个如何使用事件委托来实现相同目的的示例:

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

您的 html 需要在您的表格上有一个 ID,并提供class="delete"给您的删除链接的容器。

于 2013-02-07T23:15:26.377 回答