停止委派事件的传播

时间:2016-06-09 17:00:22

标签: javascript jquery

我在Potential Django Bug In QuerySet.query?上设置了DataTables。我希望的超链接突出显示该行。我用这个例子:

$(document).ready(function() {
  $('#example').DataTable({
    select: {
      style: 'multi'
    }
  });

  $('#example').on('click', 'a.do-nothing', function(e) {
    e.stopImmediatePropagation();
    return false;
  });
});

我似乎无法解决这个问题。任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

请参阅this fiddle

  $('#example a.do-nothing').on('click', function(e) {
    e.stopImmediatePropagation();
    return false;
  });

根据jQuery documentation

从事件处理程序返回false会自动调用event.stopPropagation()event.preventDefault()。也可以为处理程序传递false值作为function(){ return false; }的简写。因此,$( "a.disabled" ).on( "click", false );将一个事件处理程序附加到具有类disabled的所有链接,以阻止它们在单击时被跟踪,并且还可以阻止事件冒泡。

如果您不需要在$('#example a.do-nothing').on('click', false);上执行任何其他处理程序,那么您可以简单地使用a.do-nothing

很奇怪您的选择器过滤器无法正常工作:如果我们使用过滤器,则可以:

$('#example td').on('click', '.do-nothing', false);

以下将允许您继续点击事件而不冒泡点击DOM并触发悬停:

  $('#example td').on('click', '.do-nothing', function (e) {
    e.stopPropagation();
  });

答案 1 :(得分:0)

为什么不覆盖CSS呢?请参阅this fiddle

这样你就不需要乱用javascript了。

table.dataTable.stripe tbody > tr.odd.selected, table.dataTable.stripe tbody > tr.odd > .selected, 
table.dataTable.display tbody > tr.odd.selected, table.dataTable.display tbody > tr.odd > .selected {
    background-color: #f9f9f9;
}

table.dataTable.hover tbody > tr.selected:hover, table.dataTable.hover tbody > tr > .selected:hover, 
table.dataTable.display tbody > tr.selected:hover, table.dataTable.display tbody > tr > .selected:hover {
    background-color: #f9f9f9;
}

table.dataTable tbody>tr.selected, table.dataTable tbody>tr>.selected {
    background-color: #f6f6f6;
}