我的a
和img
标签内部有一种奇怪的行为。
我有一个带有表的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>
元素?
答案 0 :(得分:5)
您正在使用ID选择器#delete a
,它只匹配一个(通常是第一个)元素。
尝试使用类,例如.delete a
。
你只获得一个元素的原因是因为JQuery优化了以#
开头的任何选择器传递给document.getElementById
,它只返回1个元素。
以下是如何使用事件委派来实现相同目标的示例:
$("#tableid").click(".delete a", function(e) {
// your code
});
你的html需要在你的桌子上有一个ID,并将class="delete"
提供给删除链接的容器。