【发布时间】: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
【问题讨论】:
-
也许看看mark.js
标签: jquery jquery-selectors jquery-traversing