【问题标题】:iterate through all child elements of a table and reset background color遍历表的所有子元素并重置背景颜色
【发布时间】:2014-02-05 18:57:24
【问题描述】:

我有一个表格,里面有许多其他表格、行、单元格和其他元素。一些子元素有背景颜色。我想递归遍历所有孩子并将他们的背景颜色重置为白色,前提是他们当前的背景颜色是#ede7dd。

如何在 jQuery 或 JavaScript 中做到这一点?任何人的实施都会比其他人更快吗?

我有点卡在这里:

$('.HDRBody *').each(function(){
    // code here
});

这是 DOM 的截图:http://i39.tinypic.com/2pql4i8.jpg

感谢您的帮助!

【问题讨论】:

  • 你没有。获取元素颜色可能会返回 hex、rgb 或 rgba,具体取决于浏览器,因此对于您可能应该找到另一种方法的事情来说,这似乎需要做很多工作。
  • 我们需要更多信息来帮助您找到好的解决方案。当前如何设置背景颜色,例如 . . .内联样式?基于类的 CSS?基于位置的 CSS?一些示例 HTML 也会有所帮助。
  • 请在下面通过演示查看我的答案。这应该对你有用......

标签: javascript jquery dom iteration


【解决方案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');

【讨论】:

  • 现在在您的浏览器中尝试,并添加一个控制台日志来检查 css() 返回的背景颜色,我向您保证它不是 HEX,除非您的浏览器是古老的。
  • 是的,但你可以这样做。
  • 我已经用演示修改了我的答案
【解决方案2】:

这应该可行:

$("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]")

【讨论】:

    猜你喜欢
    • 2017-04-30
    • 1970-01-01
    • 2022-11-04
    • 2019-07-31
    • 2017-01-25
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多