所以我的标题可能令人困惑,但它有正确的细节。我有一个可点击行的表。单击该行时,该行突出显示。该表还有一个复选框列。 单击该复选框不应突出显示或删除该行中的突出显示。如何正确使用.not()或:不在.on('click','tr',function(){。 ..})? http://jsfiddle.net/vmu0p2oe/
$('table').on('click', 'tr', function () {
if ($(this).hasClass('selected')) {
$(this).removeClass('selected');
//$(this).find(":checkbox").prop("checked", false);
}
else {
$('tr.selected').removeClass('selected');
$(this).addClass('selected');
//$(this).find(":checkbox").prop("checked", true);
}
});
答案 0 :(得分:7)
将其添加到处理程序的开头:
if($(e.target).is('input[type=checkbox]')) {
return;
}
如果单击的元素是复选框,这将阻止处理程序运行。
答案 1 :(得分:1)
为使用stopPropagation()
的复选框添加处理程序,以防止点击冒出tr
:
$('table').on('click', ':checkbox', function(e) {
e.stopPropagation();
});
答案 2 :(得分:0)
这个怎么样:
$('table').on('click', 'tr', function (e) {
var el = e.target;
if ( el.type !== "checkbox"){
if ($(this).hasClass('selected')) {
$(this).removeClass('selected');
//$(this).find(":checkbox").prop("checked", false);
} else {
$('tr.selected').removeClass('selected');
$(this).addClass('selected');
//$(this).find(":checkbox").prop("checked", true);
}
}
});