Получить индекс строки таблицы текущей строки - PullRequest
6 голосов
/ 30 марта 2010

Я пытаюсь проверить ввод текста, когда он теряет фокус.Я хотел бы знать, в какой строке таблицы он находится. Это то, что у меня есть до сих пор, и он снова возвращается как неопределенныйЕсть идеи?

$("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();
    }
});

Ответы [ 4 ]

14 голосов
/ 30 марта 2010

rowIndex - это свойство DOM, а не метод jQuery, поэтому вы должны вызывать его для базового объекта DOM:

tableRow[0].rowIndex

или просто:

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

, так как вы не очень часто используете jQuery.

В jQuery 1.4 есть $(row).index(), но он сканирует братьев и сестер, чтобы узнать, какой номер дочернего элемента у него в родительском. Это медленнее и вернет другой результат к rowIndex в случае, если у вас есть несколько <tbody> с.

2 голосов
/ 30 марта 2010

В jQuery 1.4. * Вы можете использовать index () метод.

Ваш селектор немного более конкретен, чем должен быть. Также вам следует использовать метод closest вместо нескольких вызовов parent (). Также кеш $ (это).

$("#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();
    }
});

Также оповещение не очень хороший инструмент для отладки, возможно, вам пора проверить firebug

1 голос
/ 30 марта 2010

Вы пытаетесь использовать атрибут DOM Core для объекта jQuery. Попробуйте это:

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 и т. Д.

0 голосов
/ 30 марта 2010

попробуйте ближайший ('tr') , если вы версии 1.3+. это будет работать лучше, чем parent (). parent ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...