javascript - jQuery 选择器,获取子元素少于 n 个的所有父元素

标签 javascript jquery html

我有一个表,可以有可变数量的 <td>每行中的元素,但最多 3 个 <td>每行的元素。假设我想选择少于 3 <td> 的行元素并将它们分配给变量,有没有一种方法可以仅使用 jQuery 选择这些行?我知道我可以使用一些东西来遍历每一行,就像这样:

var rows = $("tr").filter(function() {
  return $(this).children().length < 3
});

rows.css("background-color", "blue");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tbody>
    <tr>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
    <tr>
      <td>1</td>
    </tr>
    <tr>
      <td>1</td>
      <td>2</td>
    </tr>
  </tbody>
</table>

有没有一种方法可以只使用 jQuery 选择器和方法(即 .siblings().parents())来做同样的事情?

Here's我给出的示例的 JSFiddle。我一直在寻找类似的问题,但找不到类似的问题,所以如果可能的话,我希望有人能提供一些想法。

最佳答案

使用 :not() 的组合, :has():eq()伪类选择器。

var rows = $("tr:not(:has(:eq(2)))");

rows.css("background-color", "blue");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tbody>
    <tr>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
    <tr>
      <td>1</td>
    </tr>
    <tr>
      <td>1</td>
      <td>2</td>
    </tr>
  </tbody>
</table>


仅供引用:根据您的需要,您可以使用 :nth-child():nth-of-type()而不是 :eq()方法。

关于javascript - jQuery 选择器,获取子元素少于 n 个的所有父元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40638587/

相关文章:

javascript - 将对象拆分为特定的 ID 字符串

javascript - 检查给定值是否为正数或最多保留两位小数的 float

javascript - javascript中同名函数内的函数

html - 除第一行外,在表格周围放置边框

javascript - 我可以在不在 URL 中添加 '?callback=' 参数的情况下发出 jQuery JSONP 请求吗?

javascript - 用于日期分配的 Postman 先决条件函数

javascript - 如何解读Chrome的JS分析时间轴?

javascript - 使用ajax提交包含未知数量字段的html表单

javascript - 使用 javascript/jquery 从 Web 表单动态添加(和删除)一组文本元素

html - 如何使用css3获取相邻div的宽度