我有一个绑定到DOM元素的Jquery处理程序。

  $('.details-control').click( function () {
      var tr = $(this).closest('tr.parentRow');
      var row = table.row(tr);
      var nestedTable = tr.children('td.nested').children('table.nested').clone(true);


        if ( row.child.isShown() ) {
            // This row is already open - close it
            row.child.hide();
            tr.removeClass('shown');
        }
        else {
            // Open this row
            row.child(nestedTable).show();
            tr.addClass('shown');
        }
  });


上面的元素在分页的表中,因此在对表进行分页时,页面上的('.details-control')元素会发生变化,并且这些元素都没有附加事件。

我想将事件附加到这些新的$('details-control')元素上。

我能想到的唯一方法是再次重写代码,如下所示...

  $('.pagination').click( function () {
  //copy-paste $('.details-control').click( function () {....

  });


但是我认为必须有更好的方法..但是我的搜索没有任何结果,因为我不确定这甚至属于什么搜索词。

有没有一种方法可以命名details-control事件并调用它,或者我不必复制粘贴或重新附加或刷新处理程序的方法?

最佳答案

您正在寻找事件委托,它是将处理程序附加到容器上并过滤根据特定条件(在此情况下为选择器)起泡的事件的过程。假设.pagination.details-control的父级,并且该父级永远不会被替换:

$('.pagination').on('click', '.details-control', yourHandler);

关于javascript - jQuery:如何刷新事件处理程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40268077/

10-11 22:51
查看更多