Почему JQuery не влияет на таблицы в RMarkdown? - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь использовать JQuery для таблиц HTML в RMarkdown.В частности, я пытаюсь добавить классы строк к определенным строкам DT :: datatable с использованием JQuery.

Я тестировал код jQuery в jsFiddle, и он отлично работает.Я также протестировал базовый код jQuery (изменение цвета заголовков) в RMarkdown.Это тоже работает.Мне не удалось получить jQuery, относящийся к таблицам, работающим с DT :: datatable в RMarkdown.

Код ниже взят из файла .Rmd.

# Test
{js jQuery codechunk}
// Test that jQuery works in Rmd
$('.h1').css('color', 'red')

// Updating classes does not work
$("tr:contains('Mazda')").addClass('Mazda');

// Colour styling also does not work
$("tr:contains('Mazda')").css("color", "red")
{r R codechunk}
library(DT)
  DT::datatable(mtcars)

Я ожидаю, что при проверке таблицы строки с «Mazda» будут окрашены в красный цвет и будут иметь класс «Mazda».

Я просто вижу простой объект DataTable иклассы строк являются стандартными.

1 Ответ

2 голосов
/ 18 мая 2019

Я понял!См. Раздел 2.9 документации , «Аргумент callback».

Я внес следующие изменения, и ваш код работал как чудо.

  • Обтеканиевсе, что вы хотите сделать внутри функции.
  • Вызовите эту функцию из аргумента callback DT::datatable().
  • (я также изменил .h1 на h1, чтобы сделать эточасть примера работы.)

Красивая упаковка, кстати.Спасибо, что познакомили меня с этим!

---
title: "It works!"
author: "trianglegirl"
date: "May 20, 2019"
output: html_document
---

```{js jQuery-codechunk}
const trianglegirl_function = function() {

  // Test that jQuery works in Rmd
  $('h1').css('color', 'red');

  // Updating classes does not work
  $("tr:contains('Mazda')").addClass('Mazda');

  // Colour styling also does not work
  $("tr:contains('Mazda')").css("color", "red");
};
```

```{r R-codechunk}
library(DT)
DT::datatable(mtcars, callback = JS('trianglegirl_function();'))
```
...