$country.parent().parent().next().children('td').children('.province-select')
基本上我有一些看起来像这样的HTML:
<table>
<tr>
<th>country</th>
<td><select name="country"/></td>
</tr>
<tr>
<th>province</th>
<td><select class="province-select"/></td>
</tr>
</table>
一旦我抓住了国家select
,我需要找到下一个.province-select
。如果它对于微妙的HTML更改更加健壮,那么会很好。
AFAIK next()
只找到兄弟姐妹,closest()
只遍历DOM树。
我在同一张桌子上都有一些。这就是我使用所有这个父/下一个垃圾的原因。我不想使用ID,因为......好吧,那么脚本只适用于一个特定的国家/省份对;我需要它来运行所有这些;因此,我需要为国家/地区字段找到相应的省字段。
答案 0 :(得分:3)
例如:
$contry.closest('tr').next('tr').find('> td > .province-select')
答案 1 :(得分:2)
你可以尝试
$country.parents( 'tr' ).next().find('.province-select')
答案 2 :(得分:2)
下面是丑陋的,但会考虑“微妙”的变化,例如在两个选项之间添加额外的tr,它还会考虑多个国家/省份的选择元素。
//cache closest tr so we can get its index and use it as the base for the next traversal
var $closesttr = $country.closest('tr');
//search the tbody for the first instance of an element that has the class
// province-select and is after the tablerow that contains the current country
$closesttr.parent()
.find('tr:gt(' + $closesttr.index() + ') .province-select:first');
答案 3 :(得分:1)
我可能会选择:
$country.closest('table').find('.province-select');
答案 4 :(得分:1)
如果您可以为您的选择添加ID
$('#country')
和$('#province-select')
将获取您的元素,假设您的HTML不在某种转发器/列表中
修改强>
嗯,在这种情况下你试过equivalent of GetElementsByName吗?