Как получить идентификатор диапазона в динамическом выводе в блестящем - PullRequest
1 голос
/ 26 октября 2019

Я могу получить идентификатор элемента span в Shiny, используя js благодаря Stephane , но не в том случае, если элемент создается динамически (действительно, содержимое динамических элементов не содержится в исходном кодеHTML страница создана). Любые идеи, как я могу получить доступ к идентификаторам также динамических элементов?

library(shiny)

js <- "
$(document).ready(function(){
  $('span').on('mouseover', function(evt){
    Shiny.setInputValue('span', evt.target.id);
  });
})
"

ui <- basicPage(
  tags$head(tags$script(HTML(js))),
  tags$div(
    tags$span(id = "span1", "foo"),
    tags$span(id = "span2", "bar")
  ),                                   # mousing over these spans triggers the output in the verbatimTextOutput
  br(),
  uiOutput("dynamicArea"),             # mousing over these spans does NOT trigger the output in the verbatimTextOutput
  br(),
  verbatimTextOutput("span")
)

server <- function(input, output){
  output[["span"]] <- renderPrint({
    input[["span"]]
  })

output[["dynamicArea"]] <- renderUI({
  tags$div(
    tags$span(id = "spandynamic1", "foo2"),
    tags$span(id = "spandynamic2", "bar2") 
  ) 
})
}
shinyApp(ui, server)

1 Ответ

1 голос
/ 26 октября 2019

Используйте этот код JS:

js <- "
$(document).ready(function(){
  $('body').on('mouseover', 'span', function(evt){
    Shiny.setInputValue('span', evt.target.id);
  });
})
"
...