jQuery故障? toggleClass

时间:2018-04-19 11:31:26

标签: javascript jquery css

我学习javascript和jQuery并且遇到了一个奇怪的故障,除非我做错了什么?

或者也许是它的jsfiddle?

你能看看下面的代码,让我知道它是不是我?当您取消注释我评论的代码部分时,toggleClass停止工作。

https://jsfiddle.net/0y4neucq/5/

$('tr.discrepancy').click(function(event) {
    $(this).toggleClass("highlight");
    /*var clicked = event.target.nodeName;
  if (clicked != "INPUT") {
    $("input[type='checkbox']", this).trigger("click");
  }*/

  $('p').html(clicked);
});

1 个答案:

答案 0 :(得分:1)

这是因为当您在复选框上.trigger("click")时再次触发$('tr.discrepancy').click()处理程序,这是因为事件会在链中冒泡。你可以在这个小提琴的控制台中看到这个,我添加了一个console.log:https://jsfiddle.net/0y4neucq/11/

您可以通过添加点击处理程序并调用event.stopPropagation()来阻止点击复选框的传播。

$('input[type=checkbox]').click(function (event) { event.stopPropagation() });

或者您可以选中/取消选中该复选框,而不会触发这样的点击:

var checkbox = $(this).find("input[type='checkbox']")
checkbox.attr("checked", !checkbox.attr("checked"));