我有一个消息主题表,并且每个 tr 都可单击以导航到消息详细信息页面。但是,还有一个垃圾图标,用户可以单击该图标以通过 $.ajax 将消息标记为删除,这是通过首先将 tr 事件处理程序“关闭”来完成的。问题是,当返回 tr click 事件处理程序时,点击被处理并且用户被导航到详细信息页面。
我试图添加 e.stopPropogation(); 在 $.ajax 调用之后和 tr 的“on”设置之前,但这会阻止事件被打开。之后添加它不会阻止所需的行为。
所以我的问题是,如何在关闭 tr 后将点击事件重新“打开”,但在此过程中不触发该事件。
代码:
$("#messageTable tbody tr").on("click", function () {
var id = $(this).find('td:first').find('input').val();
window.location.replace('/Messages/Read/'+id);
});
$('.icon-trash').on("click", function (e) {
// turn off tr click to prevent navigation
$("#messageTable tbody tr").off("click");
// grab the message Id from the hidden input
var messageId = $(this).parent().find('input').val();
var tr = $(this).parent().parent();
var request = $.ajax({
url: "MarkMessageForDeletion"
, type: "GET"
, data: { id: messageId }
, dataType: "json"
, async: true
, success: function (data) {
if (data === "1") {
tr.remove();
}
}
});
// turn click back on
$("#messageTable tbody tr").on("click", function () {
var id = $(this).find('td:first').find('input').val();
window.location.replace('/Messages/Read/' + id);
});
});