找到具有特定文本的td,并在右侧的ALL td上运行?

时间:2014-01-24 19:38:08

标签: javascript jquery css

这可能看起来与我的上一个问题(Find td with specific text, and operate on the td right after that one?)有点相似,但实际上这是不同的......

我这样有一张桌子,这次:

<table class="test">
  <tr>
    <td>Row 1</td><td>Text 1-1</td><td>Text 1-2</td> ...... <td>Text 1-n</td>
  </tr>
  <tr>
    <td>Row 2</td><td>Text 2-1</td><td>Text 2-2</td> ...... <td>Text 2-n</td>
  </tr>
  <tr>
    <td>Row 3</td><td>Text 3-1</td><td>Text 3-2</td> ...... <td>Text 3-n</td>
  </tr>
  <tr>
    <td>Row 4</td><td>Text 4-1</td><td>Text 4-2</td> ...... <td>Text 4-n</td>
  </tr>
  <tr>
    <td>Row 5</td><td>Text 5-1</td><td>Text 5-2</td> ...... <td>Text 5-n</td>
  </tr>
</table>

基本上它有行,现在它有无限数量的列。

我需要使用特定文本缩小td,然后对其右侧的所有td进行操作。要查找的文本始终位于最左侧的td s,因为它将是行标题文本。

例如,我可能希望找到一个td文本Row 3,然后我需要将xyz附加到所有td的文本中td的权利(包含文字Row 3)..

因此,在我的示例中,包含td的{​​{1}}右侧的所有td都会更改其文字:

Row 3

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

还有其他类型的资源可让您根据您刚刚更改的代码选择DOM上的元素,例如nextAll()siblings()

$(".test td:contains(Row 3)")
.nextAll().text(function(){
    return $(this).text() + "xyz"
});

答案 1 :(得分:1)

使用jquery,您可以使用contains selector,但它不合适,请使用jQuery.each()

$("table.test td").each(function() {
  if ($(this).html() == "Text 2-1")
    $(this).append("xyz");
});

http://jsbin.com/IrEpeTE/1/edit

对于行使用&#34; eq()&#34;,得到第5行:

$("table.test tr:eq(4) td").each(function() {
   if ($(this).html()!="Row 5")
       $(this).append("xyz");
});

或:

$("table.test tr td").each(function() {
  if ($(this).parent().children().html()=="Row 5" && $(this).html()!="Row 5")
       $(this).append("xyz");
});