我想實現該表的行是可點擊的。我通過改變光標懸停在CSS中,以及在錶行上實現一個點擊事件來實現這一點,該事件轉到data-href
屬性中指定的鏈接。有沒有一種優雅的方式來防止JavaScript中的祖先點擊?
問題是,錶行內部有一些按鈕,它們觸發了一個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()
我依靠的事實,孩子click事件被父人之前觸發。
對我來說這看起來太複雜了。有沒有更好的方法來實現這一點?
'stopPropagation()'? –
還有'isDefaultPrevented()'。 – elclanrs
'stopPropagation' +(optionaly)[捕獲事件](http://www.quirksmode.org/js/events_order.html)... –