【问题标题】:Selector to return closest <tr> only if table has more than 2 rows仅当表超过 2 行时,选择器才返回最接近的 <tr>
【发布时间】:2011-05-18 08:23:09
【问题描述】:

在 jQuery 中是否有一个 选择器 可以执行以下操作:

$(this).closest('tr:count(tr>2)');

this 的上下文是&lt;td&gt; 中的&lt;input&gt; 元素。

免责声明:我知道这可以通过 .length .size .filter .not 等来完成,但我想知道是否有一种仅使用 CSS 选择器的好方法。

【问题讨论】:

  • 请问,这到底是干什么用的?
  • 原生 CSS 选择器不支持选择父元素。我认为,jQuery 对现有选择器语法的扩展也不允许你做你想要的。
  • @Matti 当输入按钮(删除行按钮)被单击时,它应该删除该行,但前提是它不是表中最后剩余的行。第一个 是标题,因此 > 2.
  • 将@Matti 和@Amadan 的解决方案放在一起。

标签: javascript jquery jquery-selectors css-selectors


【解决方案1】:

没有测试,但可能

$(this).closest('tr:not(:only-child)')

假设tr 将只有tr 姐妹,​​这并非不合理。

【讨论】:

  • 这样可以确保多于 1 行,但不一定多于 2 行。
  • 是的 BoltClock,不幸的是,它不适用于 > 2 行,但适用于 > 1。我最初确实尝试过这个以防万一。如果使用 Matti 将标题放入 &lt;thead&gt; 部分的技术,这将起作用
  • 很遗憾 jQuery 没有 :more-than-child(2) 选择器
  • 如果我将头部正确放入 似乎是最好的解决方案
  • 是的。抱歉误读了这个问题;确实,解决方案是@Matti 和我的组合:)
【解决方案2】:

将您的标题放在&lt;thead&gt; 中,将您的行放在&lt;tbody&gt; 中,因为它们应该是。这样一个简单的选择器,例如 tbody:has(tr)&gt;tr 或 @Amadan 给出的选择器就可以工作了。

(好吧,我不太认为选择器通过...)

【讨论】:

  • 我实际上会选择这个。 +1
猜你喜欢
相关资源
最近更新 更多
热门标签