1

特定のテキストを持つすべてのセルをコンテンツとして選択したいと思います。私はそのようにします:

$("td:contains('Some Text')")

tdしかし、次のマークアップでは、その式は2つのsを見つけます。

<table>
  <tr>
    <td>
      <table>
        <tr>
          <td>Some Text</td>
        </tr>
      </table>
    </td>
  </tr>
</table>

セルの1つにテキストを含むテーブルを含むセルではなく、実際にテキストを含むセルのみが必要です。

セレクターを変更してそこに到達するにはどうすればよいですか?

4

3 に答える 3

3

これを試して:

$("td:not(:has(*)):contains('Some Text')")

フィドル

于 2012-08-24T09:51:27.713 に答える
1
$("td").filter(function() {
    return $(this.childNodes).filter(function() {
        return this.nodeType === 3 && this.nodeValue.indexOf("Some Text") > -1;
    }).length;
});

http://jsfiddle.net/bFUEJ/1/

于 2012-08-24T09:53:48.850 に答える
0

セレクターを変更するだけでこれを達成したい場合は、いつでも行うことができます$("table table td:contains('Some Text')")

デモ: http://jsfiddle.net/bFUEJ/

より良い代替手段は、内部テーブルに ID を与えることです。

<table>
  <tr>
    <td>
      <table id="innerTable">
        <tr>
          <td>Some Text</td>
        </tr>
      </table>
    </td>
  </tr>
</table>


//JS
$('#innerTable').find("td:contains('Some Text')");
于 2012-08-24T09:51:39.217 に答える