为了账号安全,请及时绑定邮箱和手机立即绑定

在 Shiny 中选择一个选项后,如何关闭汉堡菜单的下拉菜单

在 Shiny 中选择一个选项后,如何关闭汉堡菜单的下拉菜单

慕婉清6462132 2021-05-31 13:35:45
我在 R Shiny 中有一个可折叠的导航栏菜单。当菜单折叠并单击汉堡按钮时,选项出现。当我单击其中一个选项时,会(正确地)选择另一个面板,但菜单保持打开状态。是否有可能(使用 css?)在我选择其中一个选项后立即关闭“下拉菜单”(即选项列表)?代码如下所示:library(shiny)ui <- tagList(  navbarPage(    title = NULL, id = "navBar", collapsible = TRUE,    tabPanel(title = "Panel1", uiOutput('panel1')),    tabPanel(title = "Panel2", uiOutput('panel2')),    tabPanel(title = "Panel3", uiOutput('panel3'))  ))server <- function(input, output, session) {  output$panel1 <- renderUI({p("This is panel 1")})  output$panel2 <- renderUI({p("This is panel 2")})  output$panel3 <- renderUI({p("This is panel 3")})}  shinyApp(ui = ui, server = server)
查看完整描述

1 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

您可以使用input$navBar(您的 id in navbarPage())在 navbarPage 上收听并通过 javascript 触发更改。


  observeEvent(input$navBar, {

    runjs('

      var elem = document.getElementsByClassName("navbar-collapse")[0]

      elem.setAttribute("aria-expanded", "false");

      elem.setAttribute("class", "navbar-collapse collapse");

    ')

  })

可重现的例子:


library(shiny)

library(shinyjs)


ui <- tagList(

  useShinyjs(),

  navbarPage(

    title=NULL, id = "navBar", collapsible = TRUE,


    tabPanel(title = "Panel1", uiOutput('panel1')),

    tabPanel(title = "Panel2", uiOutput('panel2')),

    tabPanel(title = "Panel3", uiOutput('panel3'))

  )

)


server <- function(input, output, session) {

  output$panel1 <- renderUI({p("This is panel 1")})

  output$panel2 <- renderUI({p("This is panel 2")})

  output$panel3 <- renderUI({p("This is panel 3")})


  observeEvent(input$navBar, {

    runjs('

      var elem = document.getElementsByClassName("navbar-collapse")[0]

      elem.setAttribute("aria-expanded", "false");

      elem.setAttribute("class", "navbar-collapse collapse");

    ')

  })

}


shinyApp(ui = ui, server = server)


查看完整回答
反对 回复 2021-06-03
  • 1 回答
  • 0 关注
  • 178 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信