0

私は非常に長いページを持っていて、私の質問に関連するtrとtdを抽出しました。

<tr>
<td colspan="2"><a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$AddControl1$dv$ctl01','')">Save</a>&nbsp;<a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$AddControl1$dv','Cancel$-1')">Back</a></td>
</tr>
<tr>
.............
.............
</tr>
<tr>
<td colspan="2"><a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$AddControl1$dv$ctl08','')">Save</a>&nbsp;<a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$AddControl1$dv','Cancel$-1')">Back</a></td>
</tr>
table#ctl00_ContentPlaceHolder1_.DetailsView tbody tr td a

4つの一致する要素を取得します

を持っている要素だけを選択するにはどうすればよい"Save"ですか?

私はこのようなことを試しました:

table#ctl00_ContentPlaceHolder1_.DetailsView tbody tr td a:contains('Save')

動作しません

4

3 に答える 3

2

:contains疑似セレクターは、CSSセレクター標準のどのレベルにも含まれていません。そのため、ではサポートされてBy.cssSelectorいないため、バニラCSSセレクターを使用してサポートすることはできません。あなたが試すことができる他のいくつかのオプションがあります。

  • によって返される要素をループして、各要素findElementsのテキストを取得し、必要な要素が見つかったらループから抜け出すことができます。
  • CSSセレクターの代わりにXPathを使用できます。
  • BySizzleは非標準の疑似セレクターを実装しているため、Sizzle JavaScript CSSセレクターエンジン(「jQueryCSSセレクターエンジン」と誤って呼ばれることが多い)を使用するクラスの独自のサブクラスを作成して、Sizzleエンジンを使用して要素を見つけることができます。
于 2012-12-10T23:08:05.047 に答える
0

私はあなたが提供したものを使用して小さなテストを作成しました、そしてあなたが提供したものの外にあなたが持っているものであると私が思うものを記入し、それは機能しています。

<html>
<head>
  <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-    ui.css" rel="stylesheet" type="text/css"/>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
  <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js">           
  </script>
  <script>

    $(document).ready(function() {
      $("#contentTable.tableClass tbody tr td a:contains('Save')").css("border", "2px     dotted blue");

    });
  </script>
</head>
<body style="font-size:62.5%;">

<table id="contentTable" class="tableClass">

  <tbody>
    <tr>
      <td colspan="2"><a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$AddControl1$dv$ctl01','')">Save</a>&nbsp;<a    href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$AddControl1$dv','Cancel$-1')">Back    </a>
      </td>
    </tr>
    <tr>
      <td colspan="2"><a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$AddControl1$dv$ctl08','')">Save</a>&nbsp;<a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$AddControl1$dv','Cancel$-1')">Back     </a>
      </td>
    </tr>
  </tbody>

</table>

</body>
</html>

テーブルIDとクラス値を簡略化しましたが、それ以外の場合はセレクターが機能しているはずです。それらを選択したら、それらの要素で何をしようとしていますか?

于 2012-12-10T22:45:26.260 に答える
0

それらが常にコードとして最初の要素である場合は、:first-child

table#ctl00_ContentPlaceHolder1_.DetailsView tbody tr td a:first-child

xpathの方法は

table#ctl00_ContentPlaceHolder1_.DetailsView tbody tr td a[text()='Save']

それ以外の場合は、要素テキストに基づくCSSセレクターに記載されていますか?テキストに基づいて要素をターゲットにするCSSの方法はありません。

于 2012-12-11T00:41:47.220 に答える