-3

我想实现表格行是可点击的。我通过更改 CSS 中的悬停光标以及在表格行上实现单击事件来实现这一点,该事件转到data-href属性中指定的链接。

问题是,表格行中有一些按钮,它们会触发 AJAX 请求。因此,当我单击这些按钮时,我希望阻止父行上的单击事件。

这是我当前的实现(在 CoffeeScript 中):

jQuery.fn.preventClick     = -> $(@).data("disabled", true)
jQuery.fn.isClickPrevented = -> $(@).data("disabled")
jQuery.fn.enableClick      = -> $(@).removeData("disabled")

$("#table tr").click ->
  window.location = $(@).data("href") unless $(@).isClickPrevented()
  $(@).enableClick()

$("#table tr").on "click", "[data-remote='true']", ->
  $(@).closest("tr").preventClick()

我依赖于子点击事件在父点击事件之前触发的事实。

对我来说,这看起来太复杂了。有没有更优雅的方法来实现这一点?

4

1 回答 1

2

在您的事件处理程序中,您可以通过调用来防止事件冒泡到祖先

e.stopPropagation();

(您需要接受e作为事件处理函数的第一个参数。)

您也可以return false从事件处理程序中执行,该处理程序同时执行stopPropagationpreventDefault

于 2013-06-19T10:57:29.787 回答