Shiny中observeEvent内JQuery无法执行问题求助
解决Shiny observeEvent中JQuery代码不执行的问题
你当前的写法错误在于:在server端的observeEvent中直接返回tags$script并不会触发前端JS代码执行——Shiny的server端无法直接向UI注入未绑定输出的HTML标签,必须用专门的工具触发前端代码。
借助你已经引入的shinyjs包,用runjs()函数就能解决这个问题,它可以直接把JS代码发送到前端执行。修改后的完整代码如下:
library(shiny) library(shinydashboard) library(shinyjs) ui <- dashboardPage( dashboardHeader(title = "Basic dashboard"), dashboardSidebar(collapsed = TRUE), dashboardBody( useShinyjs(), # 建议在UI中声明使用shinyjs,更规范 actionButton("release", "Release") ) ) server <- function(input, output) { observeEvent(input$release,{ # 用runjs执行JQuery代码 runjs("$('body').toggleClass('sidebar-collapse');") }) } shinyApp(ui, server)
关键修改说明
- 在UI的
dashboardBody中添加useShinyjs():这是shinyjs的规范用法,确保前端加载必要的JS依赖 - 将
tags$head(tags$script(...))替换为runjs(...):runjs是shinyjs专门用于在server端触发前端JS执行的函数,能直接把传入的JS代码发送到浏览器运行
内容的提问来源于stack exchange,提问作者manu p
相关产品推荐
相关产品推荐

