【问题标题】:Using prevAll to select all sections of a table containing a keyword使用 prevAll 选择包含关键字的表的所有部分
【发布时间】:2016-08-14 21:29:31
【问题描述】:

这是带有相关表格 HTML 的 jsFiddle

如果表格中包含某些关键字,我想使用 jQuery 突出显示或删除表格部分。

<table>
    <tr class="mark"></tr>
    <tr><td>apple</td></tr>
    <tr><td>1</td></tr>
    <tr><td>2</td></tr>
    <tr><td>3</td></tr>
    <tr><td>4</td></tr>
    <tr><td>5</td></tr>

    <tr class="mark"></tr>
    <tr><td>pear</td></tr>
    <tr><td>1</td></tr>
    <tr><td>2</td></tr>
    <tr><td>3</td></tr>
    <tr><td>4</td></tr>
    <tr><td>5</td></tr>

    <tr class="mark"></tr>
    <tr><td>apple</td></tr>
    <tr><td>1</td></tr>
    <tr><td>2</td></tr>
    <tr><td>3</td></tr>
    <tr><td>4</td></tr>
    <tr><td>5</td></tr>

    <tr class="mark"></tr>
    <tr><td>pear</td></tr>
    <tr><td>1</td></tr>
    <tr><td>2</td></tr>
    <tr><td>3</td></tr>
    <tr><td>4</td></tr>
    <tr><td>5</td></tr>

    <tr class="mark"></tr>
    <tr><td>apple</td></tr>
    <tr><td>1</td></tr>
    <tr><td>2</td></tr>
    <tr><td>3</td></tr>
    <tr><td>4</td></tr>
    <tr><td>5</td></tr>

    <tr class="mark"></tr>
    <tr><td>pear</td></tr>
    <tr><td>1</td></tr>
    <tr><td>2</td></tr>
    <tr><td>3</td></tr>
    <tr><td>4</td></tr>
    <tr><td>5</td></tr>

    <tr class="mark"></tr>
    <tr><td>apple</td></tr>
    <tr><td>1</td></tr>
    <tr><td>2</td></tr>
    <tr><td>3</td></tr>
    <tr><td>4</td></tr>
    <tr><td>5</td></tr>
</table>

现在,我可以使用

$("td:contains('pear')").parent().prev().nextUntil(".mark").css("background-color", "red");

完成我想做的事情(突出显示由=== 分隔的所有包含“pear”的部分)。但是对于分隔符行不直接位于我正在搜索的文本之前的情况,我如何使用prevAll 执行此操作?我尝试了$("td:contains('pear')").parent().prevAll(".mark:first").nextUntil(".mark").css("background-color", "red");,我认为它应该可以工作,但只有一个部分被突出显示。我想我对 jQuery 如何处理我想将 prevAll() 之类的操作映射到元素列表的情况缺少一个关键的理解。

请忽略不良的表格布局;这就是我必须使用的 T_T

【问题讨论】:

标签: jquery jquery-selectors jquery-traversing


【解决方案1】:

这应该可行:

$("td:contains('pear')").parent().each(function() {
  $(this).prevAll(".mark:first").nextUntil(".mark").css("background-color", "red");
});

见:https://jsfiddle.net/aszepeshazi/9czm7g3y/2/

【讨论】:

  • 啊,这正是我想要的。我对 jQuery 很陌生,不知道 each() 存在。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-14
  • 2014-02-07
  • 1970-01-01
  • 1970-01-01
  • 2012-01-27
  • 2021-11-27
相关资源
最近更新 更多