【问题标题】:Retrieve Table Row Index of Current Row检索当前行的表行索引
【发布时间】:2011-02-02 11:43:03
【问题描述】:

我正在尝试在失去焦点时验证文本输入。我想知道它在表格的哪一行。这是我到目前为止所拥有的,并且它一直以未定义的形式返回。有什么想法吗?

$("div#step-2 fieldset table tbody tr td input").blur(function() {
    var tableRow = $(this).parent().parent();
    if ($.trim($(this).val()) == "") {
        $(this).addClass("invalid");
        alert(tableRow.rowIndex);
        $(this).val("");
    } else {
        $(this).removeClass("invalid");
        checkTextChanges();
    }
});

【问题讨论】:

    标签: javascript jquery validation


    【解决方案1】:

    使用 jQuery 1.4.* 你可以使用index() method.

    您的选择器比它需要的更具体一些。此外,您应该使用 closest 方法而不是多个 parent() 调用。同时缓存 $(this)。

    $("#step-2 fieldset table td input").blur(function() {
        var that = $(this),
            tableRow = that.closest('tr');
        if ($.trim(that.val()) == "") {
            that.addClass("invalid");
            alert(tableRow.index());
            that.val("");
        } else {
            that.removeClass("invalid");
            checkTextChanges();
        }
    });
    

    另外alert也不是很好的调试工具,可能是时候看看firebug

    【讨论】:

    • 感谢您的所有建议!我没有使用 1.4.* 所以我没有访问 index() 方法,但是我已经实现了你的其余建议 +1
    【解决方案2】:

    您正在尝试在 jQuery 对象上使用 DOM Core 属性。试试这个:

    alert(tableRow[0].rowIndex);

    @jandreas:来自 W3C 文档: rowIndex of type long, readonly, modified in DOM Level 2 这是按逻辑顺序而不是按文档顺序。 rowIndex 确实考虑了表中的部分(THEAD、TFOOT 或 TBODY),将 THEAD 行放在索引中的第一个位置,然后是 TBODY 行,然后是 TFOOT 行。

    .index() 不会考虑那些 THEAD 等。

    【讨论】:

      【解决方案3】:

      如果您是 1.3+ 版本,请尝试 closest('tr')。它会比 parent().parent() 更好用

      【讨论】:

        【解决方案4】:

        rowIndex 是 DOM 属性,不是 jQuery 方法,所以你必须在底层 DOM 对象上调用它:

        tableRow[0].rowIndex
        

        或者只是:

        var row= this.parentNode.parentNode;
        alert(row.rowIndex);
        

        因为你并没有真正使用 jQuery。

        在 jQuery 1.4 中有$(row).index(),但它会扫描兄弟姐妹以找出它在其父代中的哪个子元素编号。如果您有多个 <tbody>​s,这会更慢,并且会向 rowIndex 返回不同的结果。

        【讨论】:

        • 我几乎失去了所有希望,但你的回答救了我。非常感谢
        猜你喜欢
        • 2021-07-20
        • 1970-01-01
        • 1970-01-01
        • 2011-04-04
        • 1970-01-01
        • 2011-06-16
        • 1970-01-01
        • 2016-10-01
        • 1970-01-01
        相关资源
        最近更新 更多