为什么我的行索引得到-1?

时间:2011-07-28 15:46:31

标签: jquery

我有下表...

<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?所以那里有一个问题,因为它没有找到行。有人能告诉我为什么我这么笨吗?

请注意,我无法控制桌面,因为这是由系统背面决定的(我不允许触摸!)

4 个答案:

答案 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)

$("#foo input[type=text]")表示this#foo中的文字输入。但根据你的标记,没有这样的元素。

修改

经过测试并且有效:fiddle

答案 2 :(得分:0)

  

.index()

     

从匹配的元素中搜索给定元素。

     

如果没有将参数传递给.index()方法,则返回值为   一个整数,表示第一个元素在其中的位置   jQuery对象相对于它的兄弟元素。

所以,你的代码应该可以工作。

And, in fact, it does

答案 3 :(得分:0)

这里完美无缺。 See this test case.