这应该解决的问题是Chrome和火狐浏览器:
$('tr.parent')
.css("cursor", "pointer")
.click(function (e) {
if ($(e.target).is('select') || $(e.target).is('option')) {
//
} else {
$(this).css('background-color', 'red');
}
});
$('tr[class^=child-]').find('td > div, td').hide();
JSFiddle test
编辑:如果你不需要做任何简化版点击选择时的动作。
$('tr.parent')
.css("cursor", "pointer")
.click(function (e) {
if (!($(e.target).is('select') || $(e.target).is('option'))) {
$(this).css('background-color', 'red');
}
});
$('tr[class^=child-]').find('td > div, td').hide();
JSFiddle test
快速的jsfiddle似乎显示它作为工作,但我很好奇。你知道为什么'是'会工作,而'不是'不会呢?另外,既然我们对'select'没有做任何事情,也许你可以使测试适应'$(e.target).is(':not(select)')'并且放弃'else',那么你是什么认为? (这应该工作太依据我的JSFiddle) – Chop
理解了我的第一个问题的答案:'is'是一个测试,'不'是一个过滤器... – Chop
@Chop正确:-) ......另外 - 这两个结果都是TRUTHY的值 - 所以即使你做了:'$(“body:input”)''你会得到'[]'这是一个空数组,但它是TRUTHY所以if($(“body:input” ))'仍然会像真的 –