Jquery 如何删除用户界面?
我无法使用“删除”按钮删除UI。我试着加上这个Jquery 如何删除用户界面?,jquery,r,user-interface,shiny,Jquery,R,User Interface,Shiny,我无法使用“删除”按钮删除UI。我试着加上这个 removeUI( selector = paste0("div:has(> #row", "_", input$addLine, " )"), multiple = TRUE, immediate = TRUE, session ) 但它不起作用。当我单击“删除”按钮时,什么也没有发生。我想知道我是否没有正确地在remove
removeUI(
selector = paste0("div:has(> #row", "_", input$addLine, " )"),
multiple = TRUE,
immediate = TRUE,
session
)
但它不起作用。当我单击“删除”按钮时,什么也没有发生。我想知道我是否没有正确地在removeUI
函数中指定选择器
有没有办法让这一切顺利进行,或者我应该尝试其他方法
以下是一个可复制的示例:
library(shiny)
newlist <- as.list(c("LV1", "LV2", "x1", "x2", "x3", "x4", "x5", "x6"))
symbol <- as.list(c("=~", "~"))
row_ui <- function(id) {
ns <- NS(id)
fluidRow(
column(2,
uiOutput(ns("ui_placeholder"))),
column(2,
uiOutput(ns("ui_placeholder3"))),
column(2,
uiOutput(ns("ui_placeholder2")))
)
}
row_server <- function(input, output, session) {
return_value <- reactive({paste(input$variable1, input$symbol1, paste(input$variable2, collapse = "+"))})
ns <- session$ns
output$ui_placeholder <- renderUI({
selectizeInput(ns("variable1"), "LV:", choices = c(' ', newlist), options=list(create=TRUE), selected = NULL)
})
output$ui_placeholder2 <- renderUI({
selectizeInput(ns("variable2"), "Ind:", choices = c(' ', newlist), options=list(create=TRUE), selected = NULL, multiple = TRUE)
})
output$ui_placeholder3 <- renderUI({
selectizeInput(ns("symbol1"), "Type", choices = c(' ', symbol), options=list(create=TRUE), selected = NULL)
})
list(return_value = return_value)
}
ui <- fluidPage(
div(id="placeholder"),
actionButton("addLine", "+ LV"),
actionButton("removeLine", "Remove UI")
)
server <- function(input, output, session) {
handler <- reactiveVal(list())
observeEvent(input$addLine, {
new_id <- paste("row", input$addLine, sep = "_")
insertUI(
selector = "#placeholder",
where = "beforeBegin",
ui = row_ui(new_id)
)
handler_list <- isolate(handler())
new_handler <- callModule(row_server, new_id)
handler_list <- c(handler_list, new_handler)
names(handler_list)[length(handler_list)] <- new_id
handler(handler_list)
removeUI(
selector = paste0("div:has(> #row", "_", input$addLine, " )"),
multiple = TRUE,
immediate = TRUE,
session
)
})
}
shinyApp(ui, server)
库(闪亮)
newlist也许你正在寻找这个
library(shiny)
newlist <- as.list(c("LV1", "LV2", "x1", "x2", "x3", "x4", "x5", "x6"))
symbol <- as.list(c("=~", "~"))
row_ui <- function(id) {
ns <- NS(id)
fluidRow(
column(2,
uiOutput(ns("ui_placeholder"))),
column(2,
uiOutput(ns("ui_placeholder3"))),
column(2,
uiOutput(ns("ui_placeholder2")))
)
}
row_server <- function(input, output, session) {
return_value <- reactive({paste(input$variable1, input$symbol1, paste(input$variable2, collapse = "+"))})
ns <- session$ns
output$ui_placeholder <- renderUI({
selectizeInput(ns("variable1"), "LV:", choices = c(' ', newlist), options=list(create=TRUE), selected = NULL)
})
output$ui_placeholder2 <- renderUI({
selectizeInput(ns("variable2"), "Ind:", choices = c(' ', newlist), options=list(create=TRUE), selected = NULL, multiple = TRUE)
})
output$ui_placeholder3 <- renderUI({
selectizeInput(ns("symbol1"), "Type", choices = c(' ', symbol), options=list(create=TRUE), selected = NULL)
})
list(return_value = return_value)
}
ui <- fluidPage(
div(id="placeholder"),
actionButton("addLine", "+ LV"),
actionButton("removeLine", "Remove UI")
)
server <- function(input, output, session) {
handler <- reactiveVal(list())
### keep track of elements/lines inserted and not yet removed
inserted <- c()
observeEvent(input$addLine, {
new_id <- paste("row", input$addLine, sep = "_")
insertUI(
selector = "#placeholder",
where = "beforeBegin",
ui = tags$div(
div(row_ui(new_id)),
id = new_id
)
)
# inserted <<- c(new_id, inserted) ## removes first one first
inserted <<- c(inserted, new_id) ## removes last one first
handler_list <- isolate(handler())
new_handler <- callModule(row_server, new_id)
handler_list <- c(handler_list, new_handler)
names(handler_list)[length(handler_list)] <- new_id
handler(handler_list)
})
observeEvent(input$removeLine, {
removeUI(
## pass in appropriate div id
selector = paste0('#', inserted[length(inserted)])
)
inserted <<- inserted[-length(inserted)]
})
}
shinyApp(ui, server)
库(闪亮)
新列表就是它。!