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

时间:2013-07-06 15:28:00

标签: jquery

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

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

示例代码:jsFiddle

我可以使用$('#rec td:has(>input)')执行此操作,但我更倾向于使用.has() method作为:has() selector提及性能问题的文档 - 我的表可能会变得很大,有几个嵌入式表格和我 - 仍然 - 必须支持IE6 ......

然而,$('#rec td').has('>input')不起作用(它包括实际上没有<input>作为直接子项的单元格),似乎忽略了>子选择器...

有没有办法使用.has()方法获得与:has()选择器相同的结果?

3 个答案:

答案 0 :(得分:2)

我相信首先找到所有input,然后找到他们的父td更高效:

$('#rec input').closest('td').css('background-color', 'blue');

这样就不需要检查每个表格单元格及其子代。

<强> FIDDLE

答案 1 :(得分:0)

尝试删除&gt;来自.has()

答案 2 :(得分:0)

$('#rec td').has('input').addClass('highlight')

$.each($('#rec td').has('input'), function(){
    $(this).addClass('highlight');
});