Jquery 如何覆盖对行的单击?
我有一个表,每一行都分配了一个唯一的ID,这样我就可以单击该行,用jquery抓取它并编辑该行的数据。我喜欢点击整行以方便用户使用 在最后一列中,我有一个X,我希望能够单击它来删除该行。同样,它有一个唯一的ID,所以我可以识别每一行。我的jquery看起来像这样Jquery 如何覆盖对行的单击?,jquery,preventdefault,Jquery,Preventdefault,我有一个表,每一行都分配了一个唯一的ID,这样我就可以单击该行,用jquery抓取它并编辑该行的数据。我喜欢点击整行以方便用户使用 在最后一列中,我有一个X,我希望能够单击它来删除该行。同样,它有一个唯一的ID,所以我可以识别每一行。我的jquery看起来像这样 $('.delrow').click(function(e) { e.preventDefault(); var id = $(this).attr('id'); id = id.substr(3);
$('.delrow').click(function(e) {
e.preventDefault();
var id = $(this).attr('id');
id = id.substr(3);
if (confirm('Are you sure you want to delete this row?')) {
$.ajax({
url: "/rowdelete/?delid="+id,
success: function(data)
{
location.href="/";
}
});
} else {
return false;
}
});
这将删除该行,然后返回主页。它所做的是删除该行,然后继续使用行id为null的编辑模块,因为行单击的默认操作就是这样做的。在这一点上,我假设preventDefault只适用于表单操作,因此在这种情况下不起作用。如何覆盖默认的行单击操作
谢谢 看起来您想要阻止其他事件处理程序发生,因此您想要
event.stopImmediatePropagation()
或event.stopPropagation()
这个链接可能会澄清一点:
使用
e.stopPropagation()
代替e.preventDefault()
。简单
编辑:现在我不用手机接听,我想我应该多加一点。停止传播可能会产生不希望的影响。例如,如果要将事件添加到$(窗口),请单击()?停止传播后,如果用户单击x
,则不会触发此事件。更好的方法是这样想:
$('.row').click(function (event) {
if ($(event.target).hasClass('delrow')) {
return false;
}
// edit row
});
然后,您可以将自己的事件添加到x
元素中。如果您愿意,您也可以将您的事件放在if语句中。。。这是一个偏好的问题。我希望事情会那么容易。谢谢