处理数据表行内的事件

handle events inside datatable row

我对 datatable 中的事件有疑问。

我有一个 table 并且在几个列中,我有锚标记,例如:

<tr role="row" class="odd">
  <td class="sorting_1">1</td>
  <td>4.000,00</td>
  <td>
    <a class="js-details" id="9">
      <p class="blue-text">Ver detalle</p>
    </a>
  </td>
  <td>04/09/2017</td>
  <td>
    <a class="icon-checkmark"></a>
    <a class="icon-x red-text js-payment-rejected" href="#" id="9" title="Rechazar el Pago"></a>
  </td>
</tr>

我有这些功能:

$('.js-payment-approved').click ->
  payment_document_id = $(this).attr('id')
  $.get("#{approved_payment_documents_path}", payment_document_id: payment_document_id)

$('.js-payment-rejected').click ->
  payment_document_id = $(this).attr('id')
  $.get("#{rejected_payment_payment_documents_path}", payment_document_id: payment_document_id)

如果我点击任何锚标签,事件不会触发,我在数据table 论坛上看到我应该做类似 this:

的事情
$('.approved-datatable').on 'tr', 'click',  (e) ->
  $('.js-payment-rejected').click ->
    payment_document_id = $(this).attr('id')
    $.get("#{rejected_payment_payment_documents_path}", payment_document_id: payment_document_id)

但如果我这样做,我必须单击两次 table 才能触发事件。

有什么解决办法吗?

on 方法是一个事件处理程序,您可以将其绑定到您感兴趣的事件,因此您无需在处理程序中调用 .click 方法。这应该足够了:

$('.approved-datatable').on 'click', '.js-payment-rejected', (e) ->
  payment_document_id = $(this).attr('id')
  $.get("#{rejected_payment_payment_documents_path}", payment_document_id: payment_document_id)

注意jQuery on需要事件作为第一个参数,第二个是选择器。供参考jQuery API