找到具有特定文本的td,然后在那个之后的td上运行?

时间:2014-01-24 18:08:37

标签: javascript jquery css jquery-selectors html-table

我对jQuery选择器不太熟悉,所以想要一些帮助。

我有一张这样的表:

<table class="test">
  <tr>
    <td>Section Heading 1</td><td>Section Text 1</td>
  </tr>
  <tr>
    <td>Section Heading 2</td><td>Section Text 2</td>
  </tr>
  <tr>
    <td>Section Heading 3</td><td>Section Text 3</td>
  </tr>
  <tr>
    <td>Section Heading 4</td><td>Section Text 4</td>
  </tr>
  <tr>
    <td>Section Heading 5</td><td>Section Text 5</td>
  </tr>
</table>

我需要做的是找到包含特定文字的td,并对其右侧td中的文字进行操作。

例如,假设我想找到包含文本td的{​​{1}},并将Section Heading 4中包含的文本连接到文本{{1} },以便td变为hello ..

哪个jQuery选择器可以用于此目的?

6 个答案:

答案 0 :(得分:14)

我的初步答案忽略了更新文本的问题,以下是包含以下内容的示例:

$(".test td:contains(Heading 1)")
    .next().text(function(){
        return $(this).text() + " Hello"
    });

我不相信你可以使用append方法,因为我认为它只能用于添加html标签。

答案 1 :(得分:7)

首先,您要使用:contains

jQuery( "td:contains(text)" );

然后,您可以使用.next.append

jQuery( "td:contains(text)" ).next().append("Hello");

这是一个用于演示用法的工作片段:

jQuery(function($) {
  $("td:contains(Text to Find)").next().append(" Hello");
});
table {
  border-collapse: collapse;
}

td {
  border: 1px solid #ccc;
  padding: 2px 5px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<table>
  <tbody>
    <tr>
      <td>Some Text</td>
      <td>More Text</td>
      <td>YMT</td>
    </tr>
    <tr>
      <td>Text to Find</td>
      <td>Modify:</td>
      <td>Do nothing here</td>
    </tr>
  </tbody>
</table>

答案 2 :(得分:2)

jQuery有:contains()伪类:

$('td:contains("Section Heading 4")').next().text(function(_,t){
    return t + ' Hello';
})

小心,:contains区分大小写。

答案 3 :(得分:0)

这应该有用......

$(function() {
    var searchText = "Section Heading 3";
    var output = "";
    $("td").each(function(i, item) {
        if($(item).html() == searchText) {
            output = $(item).html();
            output += $(item).closest("td").html()
        }
    });

    console.log(output);
});

这是一个jsFiddle http://jsfiddle.net/5ELLM/

答案 4 :(得分:0)

var tds=$("table.test").find("td");
var td,i;
for(i=0;i<tds.size();i++) {
  td=tds.eq(i);
  if (td.text().indexOf("Section Heading 4")!=-1) {
    td.next().text(td.next().text()+"hello");
  }
}

答案 5 :(得分:0)

获取信息

var data ="Search string" $('#table1 td:contains('+data+')').next().text();