如何在闪亮的动态输出中获取跨度的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);
});
})
"
由于
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);
});
})
"