在网格链接上使用锚点会同时触发网格链接.click()和锚点.click)操作



我有一个MvcContrib Html.Grid项目。在每个网格行中,我都有一个"删除按钮",它实际上是一个样式锚<a>。如果你在远离锚的地方点击gridrow,就会触发一个动作,显示所选项目的详细信息。如果单击网格中的锚点,则会触发详细操作(第一个)和删除操作(第二个)。通过调试器,两个操作同时执行从细节开始。在某些情况下,这会导致null引用异常。

我已经搞砸了event.preventDefault()和其他一些技术,试图在点击锚时阻止两者都被解雇,但我似乎无法理解。有人对此有什么见解吗?我应该为每一行使用一个实际的<input type="button" />吗?

这是我在网格行上的"按钮":

column.For(s => "<a class="delete fg-button ui-state-default fg-button-icon-left ui-corner-all" href="#"><span class="ui-icon ui-icon-trash"></span>Delete</a>").Named("").DoNotEncode(); })

以下是引发的两个事件:

$(".gridlink").click(function () { getDetails($(this)); });
$("#subscriptions table.grid tbody > tr .fg-button.delete").live('click', deleteHandler);

您可以尝试阻止事件冒泡:

$('#subscriptions table.grid tbody > tr .fg-button.delete').live('click', function(evt) {
    deleteHandler();
    evt.stopPropagation();
    // preventing the default action might not actually be necessary in this case
    // as your delete anchor href points to # so there is no default action.
    evt.preventDefault();
});

.gridlink点击而言,您可能需要执行同样的操作。

最新更新