【问题标题】:Striping a table: bug with tr:nth-child td in Chrome/Safari条带化表格:Chrome/Safari 中 tr:nth-child td 的错误
【发布时间】:2018-09-13 04:13:00
【问题描述】:

我正在尝试根据行在表格中的位置和值,使用 JavaScript 对表格单元格进行条带化,因此我想使用 tr:nth-child(i) td 仅抓取单元格(忽略 th)...

这是一个显示问题的小提琴(错误?)我发现:http://jsfiddle.net/redroot/pBe94/。正如您可能看到的那样,我正在删除表格正文前四行中的td 元素。在 Chrome 和 Safari 中,在第 2 行和第 3 行中只能找到第一个单元格,而如果我先找到该行,然后使用 find("td") 就可以正常工作,如第 4 行所示。

起初我以为这是我的标记,但它看起来不错,并且在 Firefox 中运行良好。所以我有点难过,任何帮助将不胜感激!

(在我的测试中,document.querySelectorAll 会发生一些事情,仅在 Chrome 和 Safari 中。)

【问题讨论】:

    标签: javascript jquery html-table


    【解决方案1】:

    是的,似乎确实存在一些 WebKit 错误。我之前here也遇到过这个问题,但是这个bug显然还没有修复。

    要做的一件事是强制 Sizzle 进行选择,而不是使用原生 WebKit 引擎:

    $.expr[":"].dummy = function() {
        return true;
    };
    

    那么你可以使用:

    $("#rows tbody tr:nth-child(1) td:dummy").css("background-color","#e0e0e0");
    

    由于:dummy 本身不可用,jQuery 将使用 Sizzle(它的自定义选择库)。不过,采用这种非本地方式会降低性能(一如既往)。

    http://jsfiddle.net/pBe94/2/

    【讨论】:

    • 很好的快速回答,非常感谢。我最终会尝试解耦 jQuery 依赖,但这将是一个好的开始,干杯
    • 我猜非jQuery的方式是先找到表格行,然后找到任何子tds ...嗯
    • @redroot:使用 CSS 怎么样?如果我没记错的话,CSS 确实可以正常工作。
    • 是的,它工作得很好,但是它需要动态地与 JS 一起使用这个项目但是
    猜你喜欢
    • 1970-01-01
    • 2019-04-30
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 2010-11-04
    相关资源
    最近更新 更多