Как выбрать определенные объекты в $ (this) в jQuery? - PullRequest
2 голосов
/ 27 ноября 2011

Я очень стараюсь научиться циклически проходить между строками в jQuery dataTable, не очень хорошо.

Идентификатор моей таблицы - "partslist". Итак:

    $("#partslist tr").each(function() {
        $($(this) + " td").each(function() {
            alert($(this).text());
        })
    })

Вы можете видеть, что:

$ ($ (this) + "td"). Каждый ...

большой жирный сбой. Я хочу перебрать столбцы в каждой строке. Забавно, но со всеми этими примерами на сайте dataTables я не могу найти ни одного, который позволил бы мне легко получить данные из таблицы.

Ответы [ 4 ]

2 голосов
/ 27 ноября 2011

вы можете сделать это:

$("#partslist tr").each(function() {
        $(this).find("td").each(function() {
            alert($(this).text());
        })
    })

, который находит все td в выборе tr

или это

$("#partslist tr").each(function() {
        $("td",$(this)).each(function() {
            alert($(this).text());
        })
    })

, который находит все td, используя выбор tr в качестве области действия или "контекста"

Оба они выполняют одно и то же.

1 голос
/ 28 ноября 2011

Другое место для манипулирования данными внутри jQuery DataTables находится внутри fnRowCallback.Это параметр инициализации, который обеспечивает идеальное место для получения данных и предоставления обновлений построчно.Кроме того, поскольку внутренние функции рендеринга уже создают и кэшируют определенные объекты, это более эффективно.

Конечно, есть причины хотеть, чтобы данные ПОСЛЕ того, как они были отрисованы, но ваш вопрос не указывает на ваш вариант использования.,Вот пример манипулирования строкой непосредственно перед тем, как узел добавляется в DOM.

Вот фальшивый пример.Представьте, что в моих возвращаемых данных (двумерный объект, поэтому я обращаюсь к нему по индексу, а не по имени), мой второй столбец содержит строку, представляющую состояние детали.Для простоты есть два варианта: новый или восстановленный.Я на самом деле передаю строку короткой формы, поэтому я хочу преобразовать ее в полное слово перед его отображением:

var oTable = $('#partslist').dataTable({
// ...other initialization parameters can go in here, too...
  fnRowCallback: function(nRow, aData) {
    var condition = aData[1]; // second column of the data object if it's a 2D object
    var conditionFull = "New"; // by default, parts are in new condition
    if (condition == "reman") {
      conditionFull = "Remanufactured";
    }
    $('td:eq(1)', nRow).text(conditionFull); // use jQuery to select the second VISIBLE (HTML) column and update the text     
  }
});
1 голос
/ 27 ноября 2011
$("#partslist tr").each(function() {
    $("td", this).each(function() {
        alert($(this).text());
    })
});
0 голосов
/ 27 ноября 2011

Вы можете сделать $(this).children('td').each... или просто $(this + ' td').each.... Я думаю, что любой из них будет работать, хотя я тоже не проверял.

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