在Shiny中获取光标下元素的ID,可以使用以下方法:
shinyjs::runjs()
函数来执行JavaScript代码,通过event.target
来获取光标下的元素,并使用attr()
函数获取元素的ID。library(shiny)
library(shinyjs)
ui <- fluidPage(
useShinyjs(),
actionButton("btn", "Click me"),
tags$div(id = "myDiv", "Hello Shiny!")
)
server <- function(input, output) {
observeEvent(input$btn, {
shinyjs::runjs("
var element = document.elementFromPoint(event.clientX, event.clientY);
var elementID = $(element).attr('id');
Shiny.setInputValue('selectedElementID', elementID);
")
})
observeEvent(input$selectedElementID, {
# 处理获取到的元素ID
# ...
})
}
shinyApp(ui, server)
在上述示例中,当点击"Click me"按钮时,会执行JavaScript代码来获取光标下的元素,并将其ID通过Shiny.setInputValue()
函数传递给Shiny应用的server部分。
onclick()
函数:shinyjs包提供了一个onclick()
函数,可以直接在Shiny应用中获取光标下元素的ID。首先,在Shiny应用的UI部分,为需要获取ID的元素添加一个唯一的class或id属性。然后,在Shiny应用的server部分,使用onclick()
函数来监听元素的点击事件,并获取元素的ID。library(shiny)
library(shinyjs)
ui <- fluidPage(
useShinyjs(),
actionButton("btn", "Click me"),
tags$div(id = "myDiv", "Hello Shiny!")
)
server <- function(input, output) {
onclick("myDiv", {
elementID <- input$shinyjs_clicked_id
# 处理获取到的元素ID
# ...
})
}
shinyApp(ui, server)
在上述示例中,当点击myDiv
元素时,onclick()
函数会将元素的ID存储在input$shinyjs_clicked_id
中,可以直接在server部分使用。
无论使用哪种方法,获取到元素的ID后,可以根据具体需求进行进一步处理,例如根据ID修改元素的样式、更新数据等操作。
注意:以上示例中使用了shinyjs
包来简化JavaScript代码的执行和与Shiny应用的交互。如果没有安装该包,可以通过install.packages("shinyjs")
进行安装。
领取专属 10元无门槛券
手把手带您无忧上云