【问题标题】:Selecting a column (jQuery)选择一列 (jQuery)
【发布时间】:2010-12-29 03:21:19
【问题描述】:
$('.table tbody td:eq(3)').addClass('col4');

..有效,但只选择第一个单元格,而不是列中的所有单元格。

【问题讨论】:

    标签: javascript jquery css jquery-selectors css-selectors


    【解决方案1】:

    您还可以使用<col> 元素来设置整个列的样式,而不必将样式应用于该列中的所有<td>s。

    http://www.w3.org/TR/html401/struct/tables.html#h-11.2.4.2

    【讨论】:

    • 我不认为你可以用 做很多事情,我猜它不允许 CSS 样式?
    • 可以,但只允许几种样式。 quirksmode.org/css/columns.html
    • 那个 quirksmode 网站不适合我。 Here's its latest working archived copy.
    • CSS 2.1 docs on table columns 声明您只能borderbackgroundwidthvisibility(以及它们的所有部分,例如border-style),尽管该示例实际上使用table-layout 进行说明,因此这可能是一个不完整的列表。你当然不能级联,例如col:hover td { background:red } :-(
    【解决方案2】:

    试试:

    $(".table tbody td:nth-child(4)").addClass("col4");
    

    注意:我在这里放了 4,因为 :eq(n) 是从零开始的,:nth-child(n) 是从一开始的。

    您偶然发现了两者之间的主要区别。 eq(3) 将只返回一个元素,即 整个 集合中的第 4 个元素。就像:first 只返回一个元素(最大值),而:first-child 可以返回很多。

    【讨论】:

    • 完美! :)(抱歉,不允许少于 15 个字符)
    • 这也说明了为什么 jQuery 的 :eq 选择器应该被怀疑地看待。它不像其他所有 :psuedo-class 选择器一样适用于上下文中的选择器部分,而是适用于整个选择器。由于它不是标准的 CSS 选择器,它还强制使用 Sizzle 库,而不是在较新的浏览器中使用快速的 querySelectorAll 实现。如果您需要此功能,请避免使用 :eq 选择器;在结果上使用.eq()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-04
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多