Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

91
Views
¿Cómo aplicar JS/jQuery después de que el elemento esté visible en una aplicación brillante?

Primero, como se menciona en esa respuesta :

El enfoque $(document).ready no funcionará porque el servidor no generará sus salidas hasta que el DOM esté listo. Use session$onFlushed en su lugar, con el parámetro once establecido en TRUE, luego shiny ejecutará la función solo una vez, no en cada descarga de sesión.

Derecha. Ahora, tengo un botón de acción ( #btn3 actionButton que aparece en la aplicación cuando hago clic en otro ( #btn1 ). Sin embargo, jQuery no funciona cuando este botón aparece después de hacer clic en otro. Quiero aplicar efectos de mouseover y mouseout en #btn3 cuando aparezca.

Mi aplicación:

 library(shiny) ui <- fluidPage( shinyjs::useShinyjs(), fluidRow(actionButton(inputId = "btn1", label = 'Press'), uiOutput("btn2")) ) server <- function(input, output, session) { observeEvent(input$btn1, { output$btn2 <- renderUI({ actionButton( inputId = "btn3", label = "", title = "Ver/ esconder análise", icon = icon('eye'), style = "color: #f2f2f2; background-color: #008cba;" ) }) }) session$onFlushed(function() { shinyjs::runjs("$('#btn3').on('mouseover',function(){ $(this).css({'color':'#020202','background-color':'#ffff00'}); }); $('#btn3').on('mouseout',function() { $(this).css({'color':'#f2f2f2','background-color':'#008cba'}); });") }, once=TRUE) } shinyApp(ui, server)

¿Cómo resolver esto?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

library(shiny) js <- " $(document).ready(function(){ $('#btn3').on('mouseover', function(){ $(this).css({'color': '#020202', 'background-color': '#ffff00'}); }).on('mouseout', function() { $(this).css({'color': '#f2f2f2', 'background-color': '#008cba'}); }); }); " ui <- fluidPage( tags$head(tags$script(HTML(js))), br(), fluidRow( actionButton( inputId = "btn1", label = 'Press', onclick = "$('#btn3').show()" ), actionButton( inputId = "btn3", label = "", title = "Ver/ esconder análise", icon = icon('eye'), style = "display: none; color: #f2f2f2; background-color: #008cba;" ) ) ) server <- function(input, output, session) { } shinyApp(ui, server)
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!