я хочу добавить класс в определенную строку (по идентификатору строки).
Я пытаюсь сделать это таким образом, но это не удалось.
var table = $('#mytableID').DataTable();
var myrow = $(table.row('#my_row_id').node());
table.row(myrow).addClass('mynewclass');
Что я делаю неправильно?
Обратите внимание, что в таблицах данных есть страницы с разбиением на страницы, а мои данные контента поступают из вызова ajax.
@DevsiOdedra, я думаю, это не будет работать с таблицами данных со страницами разбиения на страницы !?
он будет работать только с перечисленными строками, а не после загрузки данных динамической страницы.
данные будут загружаться вызовом ajax, поэтому я думаю, что мне нужно пройти через «API»?
да, вы можете добавить из бэкэнда.
Итак, вот моя проблема, как я могу это сделать?
это зависит от вашего кода, после вызова ajax, если вы используете цикл, вы также можете сделать это с внешнего интерфейса
Нет, я думаю, у нас недопонимание. Список данных не будет обновляться снова после первого вызова ajax.
jst покажи свой код js и html
его сложно отделить. Мне нужно только знать, как я могу найти узел из «my_row_id» и как я могу добавить к нему класс.
Проверьте метод rowCalback, если он соответствует вашим требованиям.
почему бы не просто $('#my_row_id').addClass('mynewclass')?
@ Пит, я думаю, что это работает только для самой страницы разбивки на страницы, а не для всех остальных страниц !? Или я ошибаюсь?
если его нет с самого начала, вам также придется вызывать его при изменении страницы datatables.net/reference/event/page
@Pete Пит, я проверил это с вашим предложением, и только если строка находится на странице разбивки на страницы в реальном представлении, она работает. Если строка на другой странице, она не будет работать.
путь из моего поста совершенно неверен, какой самый простой способ получить индекс строки по идентификатору и добавить для этого новый класс? Я думаю, что обычно это легко, но для меня это не так ....



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы близки к своему примеру кода, но вот обновленная версия:
var table = $('#mytableID').DataTable();
table.row('#my_row_id').nodes().to$().addClass('mynewclass');
Это немного сложно, потому что, хотя вы можете использовать row() для выбора одной строки (конечно, идентификатор должен быть уникальным), вам нужно использовать nodes() (форма множественного числа, а не node()) для выбора узла.
См. также to$() для справки.
Это работает для всей таблицы, независимо от нумерации страниц.
Например, если у меня есть следующая строка данных таблицы HTML:
<tr id = "my_row_id">
<td>Herrod Chandler</td>
<td>Sales Assistant</td>
<td>San Francisco</td>
<td>59</td>
<td>2012/08/06</td>
<td>$137,500</td>
</tr>
Затем мой код вставит требуемый класс, даже если строка изначально находится на странице 3 результатов.
Привет @andrewjames, большое спасибо, теперь это работает! Не могли бы вы предложить мне, как я могу перейти непосредственно на страницу разбивки на страницы строки, которая получила новый класс, пожалуйста?
Рад, что это помогло! Взгляните на примечания в этом ответе. Помогают ли они с вашим дополнительным вопросом?
просто сделайте
$('#mytableID').find('tr').addClass('mynewclass');, это добавит класс ко всем строкам, если вы хотите добавить класс к определенной строке, используйте$(this)