r语言 - Jquery inside observeEvents



我试图使用Jquery内部观察事件,但无法执行它。在我点击"释放"的那一刻;按下按钮,侧栏应该打开。我在这里有一个Jquery但不工作。但当我将相同的jquery放入onclick方法中时,它就能工作了。但是在这个方法中没有

library(shiny)
library(shinydashboard)
library(shinyjs)
ui <- dashboardPage(
dashboardHeader(title = "Basic dashboard"),
dashboardSidebar(collapsed = TRUE),
dashboardBody(
# Boxes need to be put in a row (or column)
actionButton("release", "Release"))
)

server <- function(input, output) {
useShinyjs()
observeEvent(input$release,{
tags$head(tags$script("$('body').toggleClass('sidebar-collapse');"))
})
}
shinyApp(ui, server)

Using Shiny

Shiny附带了一些方便的jQuery/Bootstrap函数,toggleClass就是其中之一。要使用它,将useShinyjs()移动到dashboardBody的某个地方或之后(不要忘记逗号),并将您的jQuery代码替换为对toggleClass的调用:

library(shiny)
library(shinydashboard)
library(shinyjs)
ui <- dashboardPage(
dashboardHeader(title = "Basic dashboard"),
dashboardSidebar(collapsed = TRUE),
dashboardBody(
useShinyjs(),                                               ## <<<
actionButton("release", "Release")
)
)
server <- function(input, output) {
observeEvent(input$release, {
toggleClass(selector = "body", class = "sidebar-collapse")  ## <<<
})
}
shinyApp(ui, server)
使用jQuery

您还可以通过使用extendShinyjs添加自定义函数(包括像您的一样的jQuery调用)来扩展可用函数,然后使用js调用它们。在它们的名称(例如toggleCollapse)前加上定义中的shinyjs.前缀,并在functions参数中与js一起注册它们以供以后使用。

library(shiny)
library(shinydashboard)
library(shinyjs)
ui <- dashboardPage(
dashboardHeader(title = "Basic dashboard"),
dashboardSidebar(collapsed = TRUE),
dashboardBody(
useShinyjs(),                                               ## <<<
actionButton("release", "Release"),
extendShinyjs(                                              ## <<<
text = "shinyjs.toggleCollapse = function() {             // <<<
$('body').toggleClass('sidebar-collapse');              // <<<
}",                                                       ## <<<
functions = c("toggleCollapse")                           ## <<<
),                                                          ## <<<
)
)
server <- function(input, output) {
observeEvent(input$release, {
js$toggleCollapse()                                         ## <<<
})
}
shinyApp(ui, server)

最新更新