【问题标题】:Adding a different tooltip to each pickerInput option with shinyBS使用 shinyBS 为每个 pickerInput 选项添加不同的工具提示
【发布时间】:2021-01-29 06:57:48
【问题描述】:

我正在尝试为选择器输入下拉菜单中的每个子选项添加工具提示。我试过调整函数 selectizeTooltip 来自reactive radioButtons with tooltipBS in shiny 但恐怕我知道的不够多,无法正确适应它。

不幸的是,只是在做

        pickerInput("pobrezavar1", label = NULL,
                    choices = c("Riesgo de pobreza (60%)"= "Pobreza_60_",
                                "Extrema pobreza (40%)"= "Pobreza_40_"
                                #"Pobreza según definición EJ-GV"= "Pobreza_GV_"
                                ),
                    selected = NULL,
                    options = list(`noneSelectedText`="Escoge"),
                    width = "100%"),
        
        selectizeTooltip(id="pobrezavar1", choice = "Pobreza_60_", title = "Tooltip for c", placement = "right", trigger = "hover"),
     

不起作用。

我正在开发的应用程序(您会看到我在 radioGroupButtons 上的工具提示在最后一行按钮中正常工作): http://iseak.shinyapps.io/Mapa2/

提前感谢您提供的任何提示。

【问题讨论】:

  • 不错的应用程序。已经有工具提示。你的意思是你想改变它们?
  • 这些工具提示用于 groupradiobutton 输入(它们看起来/工作得很好)。我想要同样的东西,但对于使用 pickerinput 完成的下拉菜单。
  • 这不是我的意思。 pickerinput 的 selected 选项已经有一个工具提示。要在打开菜单时获得选项工具提示,请参阅我的回答。
  • 哦,好的,我现在看到了,谢谢!!

标签: r shiny tooltip shinybs


【解决方案1】:

这是一种方法,不用shinyBS。

library(shiny)
library(shinyWidgets)

js <- "
var mytips = ['HELLO I AM TOOLTIP 1', 'HI I AM TOOLTIP 2'];
$('#mypicker').on('shown.bs.select', function() {
  var $lis = $($(this).data('selectpicker').selectpicker.current.elements);
  $lis.each(function(i) {
    $(this).attr('title', mytips[i]);
  });
});"

ui <- fluidPage(
  
  pickerInput(
    inputId = "mypicker",
    label = "A label",
    choices = c("a", "b")
  ),
  
  tags$script(HTML(js)),
  
  verbatimTextOutput("value")
  
)

server <- function(input, output) {
  output$value <- renderPrint(input$mypicker)
}

shinyApp(ui, server)

【讨论】:

  • 谢谢,这看起来很棒,但很奇怪,我无法让它在我的应用程序上运行。会不会是和别的东西有冲突??
  • @Ainhoa 也许您没有更改 JS 代码中的 id? (id 以# 开头,第二行)。
  • 是的,我已经改变了。嗯,我会多玩一点,看看我是否能正常工作,也许是浏览器的问题......再次感谢!
  • 你好@StéphaneLaurent,谢谢你。一个问题,我对radioButtons 做了什么改变?我没有使用 shinyBS,所以您的解决方案会对我有所帮助(我也可以提出一个新问题,请告诉我)gist.github.com/TestingGround00/…
【解决方案2】:

如果您想使用 {jsonlite} 包将数据集的变量映射到工具提示文本,则向 Stephane's answer 添加一些元素:

library(jsonlite)

df_var <- jsonlite::toJSON(df$var, dataframe="values")

js <- paste("
var mytips = ", test, ";
$('#mypicker').on('shown.bs.select', function() {
  var $lis = $($(this).data('selectpicker').selectpicker.current.elements);
  $lis.each(function(i) {
    $(this).attr('title', mytips[i]);
  });
});", sep = "")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    • 2011-12-28
    • 2016-05-01
    • 1970-01-01
    • 2020-03-17
    相关资源
    最近更新 更多