has()方法的子选择器不起作用



(确实已经提出了一般问题,但这里给出的答案提供了一种很好的方法来解决这里提出的问题,而不是其他问题的"幕后"解释…)

我试图突出显示包含输入字段的表(带有嵌入的表)中的所有单元格。

示例代码: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');
});

最新更新