我有一张桌子,里面有许多其他表格和行以及单元格和其他元素。一些子元素具有背景颜色。我希望以递归方式遍历所有子项并将其背景颜色重置为白色,前提是它们当前的背景颜色为#ede7dd。
我如何在jQuery或JavaScript中执行此操作?任何人的实施都会比另一个更快吗?
我有点被困在这里:
$('.HDRBody *').each(function(){
// code here
});
以下是DOM的屏幕截图:http://i39.tinypic.com/2pql4i8.jpg
感谢您的帮助!
答案 0 :(得分:1)
这应该有效:
$("div[class^=HDR]")
因为它将选择具有以 HDR 开头的类的每个div
。请注意,它将匹配第一个类,而不是任何类名。
<div class="HDRTest">...</div>
<div class="t1 HDRTest2">...</div>
这将只有 第一个div,因为第二个div的类名不以 HDR 开头。
jQuery Attribute starts with selector
编辑:如果您想选择table.HDRBody
使用$("table.HDRBody div[class^=HDR]")
。
答案 1 :(得分:1)
试试 DEMO
$('.HDRBody *').filter(function() {
var match = '#ede7dd', hexMatch = 'rgb(237, 231, 221)'; // match background-color
return ( $(this).css('background-color') == match
|| $(this).css('background-color') == hexMatch);
}).css('background-color', 'white');