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

问题描述 投票:1回答:1

多亏了Stephane,我可以使用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)
r shiny shinyjs
1个回答
0
投票

使用此JS代码:

js <- "
$(document).ready(function(){
  $('body').on('mouseover', 'span', function(evt){
    Shiny.setInputValue('span', evt.target.id);
  });
})
"
© www.soinside.com 2019 - 2024. All rights reserved.