gpt4 book ai didi

javascript - Shiny 的 jquery UI

转载 作者:行者123 更新时间:2023-11-30 11:10:22 27 4
gpt4 key购买 nike

我想使用带有 shiny 的 jquery UI(不使用 shinyjqui 库)。当我有一个层并尝试使用 jqueryUI 移动它时,它工作得很好,但是当这个层是使用 insertUI 动态生成时,它就不起作用了。

代码如下:

library(shiny)

ui <- fluidPage(theme = "style.css",
tags$script(src = "jquery-ui.js"),
tags$script(src = "script2.js"),
actionButton("add","Add layer"),
div(class="aux"),
div(id="works",style="width:300px;height:200px;background:red"))



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

observeEvent(input$add,{
insertUI(
selector = ".aux",
where="afterEnd",
ui = div(id=paste0("new",input$add),style="width:300px;height:200px;background:blue")

)


})






}
shinyApp(ui, server)

和js脚本

  $( function() {


$("#works").draggable();
$("#new1").draggable();


});

谢谢!

最佳答案

那是因为启动时#new1不存在。您必须在创建后执行 javascript 代码,例如 shinyjs::runjs。并在 insertUI 中使用 immediate=TRUE

library(shiny)
library(shinyjs)

ui <- fluidPage(
useShinyjs(),
tags$head(
tags$script(src = "jquery-ui/jquery-ui.min.js"),
tags$script("$(function() {
$('#works').draggable();
})")
),
actionButton("add","Add layer"),
div(class="aux"),
div(id="works",style="width:300px;height:200px;background:red"))

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

observeEvent(input$add,{
insertUI(
selector = ".aux",
where="afterEnd",
ui = div(id=paste0("new",input$add), style="width:300px;height:200px;background:blue"),
immediate = TRUE
)
runjs("$('#new1').draggable();")
})

}

shinyApp(ui, server)

enter image description here

关于javascript - Shiny 的 jquery UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53944084/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com