对于给定的(不完整的)HTML表:
<tr>
...
</tr>
<tr>
<td><input type="radio"></td>
<td>Red Hot Chili Peppers</td>
<td></td>
</tr>
<tr>
<td><input type="radio"></td>
<td>Britney Spears</td>
<td></td>
</tr>
<tr>
...
</tr>
我使用xpath选择器//td[contains(., 'Red Hot Chili Peppers')]//preceding-sibling::td//input
单击单选按钮。
问题是我正在测试的页面上xpath有时会不稳定。我希望切换到jQuery。
如何在jQuery中做到这一点?
答案 0 :(得分:2)
与之等效的jQuery将使用:contains
,prev()
和find()
,如下所示:
$('td:contains("Red Hot Chili Peppers")').prev('td').find('input')
$('td:contains("Red Hot Chili Peppers")').prev('td').find('input').prop('checked', true);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td><input type="radio"></td>
<td>Red Hot Chili Peppers</td>
<td></td>
</tr>
<tr>
<td><input type="radio"></td>
<td>Britney Spears</td>
<td></td>
</tr>
</table>
答案 1 :(得分:1)
是的,你可以那样做 检查此https://api.jquery.com/contains-selector/
供您的代码使用
$('td:contains("Red Hot Chili Peppers")').prev('td').find('input');
我建议使用jQuery,因为我在其之上构建了许多库。您将轻松找到所需的东西。
答案 2 :(得分:1)
preceding-sibling
应该与 all 个前面的兄弟姐妹匹配,最合适的jQuery等效项是prevAll
:
$("td:contains('Red Hot Chili Peppers')")
.prevAll("td")
.find("input")