如何选择第一个和第二个td包含特定值的tr?

时间:2017-03-28 09:46:41

标签: javascript jquery

我的表格看起来像这样:

enter image description here

代码如下:

<table id="table1">
    <tr>
        <td>HU</td>
        <td>BIP</td>
        <td>Pannon</td>
    </tr>
    <tr>
        <td>HU</td>
        <td>BIP</td>
        <td>T-Mobile</td>
    </tr>
    <tr>
        <td>HU</td>
        <td>BIP</td>
        <td>Vodafone</td>
    </tr>
    <tr>
        <td>HU</td>
        <td>FUN</td>
        <td>Pannon</td>
    </tr>
    <tr>
        <td>HU</td>
        <td>FUN</td>
        <td>T-Mobile</td>
    </tr>
    <tr>
        <td>HU</td>
        <td>FUN</td>
        <td>Vodafone</td>
    </tr>
</table>

如何选择第一个<tr>包含“HU”而第二个<td>包含“BIP”的最后<td>

我试着像这样选择它:

$('#table1').find('tr td:first-child:contains("HU") td:nth-child(2):contains("BIP")').last();

什么都不显示

就像这样:

$('#table1').find('tr td:first-child:contains("HU")').parent().each(function(i,e){
    console.log($(e).children('td:contains("BIP")').parent().last());
});

不显示最后tr,而是显示所有这些(包含“HU”和“BIP”)。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您可以使用eq()includes()方法执行此操作。

  

eq()将匹配元素的集合减少到指定的元素   索引。

&#13;
&#13;
var copy;
$('table tr').each(function(i,e){
    var first=$(this).find('td').eq(0).html().includes("HU");
    var second=$(this).find('td').eq(1).html().includes("PIB");
    if(first && second){
      copy=$(e);
    }
});
console.log($(copy).html());
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
     <td>HU</td>
     <td>PIB</td>
     <td>Pannon</td>
  </tr>
  <tr>
     <td>HU</td>
     <td>PIB</td>
     <td>T-Mobile</td>
  </tr>
  <tr>
     <td>HU</td>
     <td>PIB</td>
     <td>Vodafone</td>
  </tr>
  <tr>
     <td>HU</td>
     <td>FUN</td>
     <td>Pannon</td>
  </tr>
  <tr>
     <td>HU</td>
     <td>FUN</td>
     <td>T-Mobile</td>
  </tr>
  <tr>
     <td>HU</td>
     <td>FUN</td>
     <td>Vodafone</td>
  </tr>
  
</table>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您可以这样做:

$(document).ready(function() {
    var target = $('table tr td:first-child:contains("HU")').parent().find('td:nth-child(2):contains("BIP")').last().parent();
    console.log(target.html());
});
<script
    src="https:code.jquery.com/jquery-2.2.4.min.js"
    integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="
    crossorigin="anonymous"></script>

<table>
    <tr>
      <td>HU</td>
      <td>BIP</td>
      <td>Pannon</td>
    </tr>
    <tr>
      <td>HU</td>
      <td>BIP</td>
      <td>T-Mobile</td>
    </tr>
    <tr>
      <td>HU</td>
      <td>BIP</td>
      <td>Vodafone</td>
    </tr>
    <tr>
      <td>HU</td>
      <td>FUN</td>
      <td>Pannon</td>
    </tr>
    <tr>
      <td>HU</td>
      <td>FUN</td>
      <td>T-Mobile</td>
    </tr>
    <tr>
      <td>HU</td>
      <td>FUN</td>
      <td>Vodafone</td>
    </tr>
  </table>

首先选择包含“HU”的所有第一个td,然后选择其父tr,然后再次找到包含<{1}}的{​​{1}}来过滤结果em>“BIP”然后最后选择最后一个匹配的元素。