如何在闪亮的动态输出中获取跨度的ID

how to get the id of a span in dynamic output in shiny

由于 ,我可以使用 js 在 Shiny 中获取 span 元素的 id,但如果该元素是动态生成的(实际上动态元素的内容不包含在源代码中) HTML 页面已生成)。有什么想法可以访问动态元素的 ID 吗?

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)

使用这个 JS 代码:

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