我有下表...
<table id="foo">
<tr><td><!-- label --><!-- select --></td><tr>
<tr><td><!-- label --><input type="text" /></td><tr>
<tr><td><!-- label --><!-- select --></td><tr>
<tr><td><!-- label --><!-- radio buttons --></td><tr>
<tr><td><!--hidden validation image--></td><tr>
</table>
现在当页面呈现时,我使用jQuery的.each隐藏除了表格的第一行以外的所有行。现在我希望扩展我的脚本,以便当用户在文本框上导致模糊事件时,我检索该行的索引,然后显示下一行,我正在使用以下代码:
$("#foo input[type=text]").blur(function() {
alert($(this).closest("tr").index());
});
但警告的值似乎是-1?所以那里有一个问题,因为它没有找到行。有人能告诉我为什么我这么笨吗?
请注意,我无法控制桌面,因为这是由系统背面决定的(我不允许触摸!)
答案 0 :(得分:1)
Maybe you are trying to achieve this?
如果是,这是适当的代码。
HTML:
<table id="foo">
<tr>
<td>
<input type="text" />
</td>
</tr>
<tr>
<td>
<input type="text" />
</td>
</tr>
</table>
JS:
$("#foo input[type=text]").blur(function() {
alert($(this).closest("tr").index());
});
你的代码很好。问题应该在其他地方。
答案 1 :(得分:0)
答案 2 :(得分:0)
从匹配的元素中搜索给定元素。
如果没有将参数传递给.index()方法,则返回值为 一个整数,表示第一个元素在其中的位置 jQuery对象相对于它的兄弟元素。
所以,你的代码应该可以工作。
答案 3 :(得分:0)
这里完美无缺。 See this test case.