我学习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);
});
答案 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"));