(确实已经提出了一般问题,但这里给出的答案提供了一种很好的方法来解决这里提出的问题,而不是其他问题的"幕后"解释…)
我试图突出显示包含输入字段的表(带有嵌入的表)中的所有单元格。
示例代码:jsFiddle
我可以用$('#rec td:has(>input)')
来做,但我更喜欢使用.has()方法,因为:has()选择器的文档提到了性能问题-我的表可能会变得很大,有几个嵌入的表,我仍然必须支持IE6…
然而,$('#rec td').has('>input')
不起作用(它包括实际上没有<input>
作为直接子级的单元格),似乎忽略了>
子级选择器。。。
有没有一种方法可以用.has()方法和用:has()选择器获得相同的结果?
我相信先找到所有的input
,然后找到它们的父td
会更有效:
$('#rec input').closest('td').css('background-color', 'blue');
这样就不需要检查每个表格单元格及其子单元格。
FIDDLE
尝试从.has()中删除>
$('#rec td').has('input').addClass('highlight')
或
$.each($('#rec td').has('input'), function(){
$(this).addClass('highlight');
});