You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将jQuery UI Dialog追加到页面指定div中?现有代码遇问题

如何将jQuery UI Dialog追加到指定的#mainarea元素中?

嘿,我明白你遇到的问题了!jQuery UI Dialog默认会把对话框的容器追加到<body>标签里,而你想把它放到页面的#mainarea div中对吧?你之前尝试的append:'#mainarea'其实不是Dialog的合法配置项,而open回调里的代码也搞反了追加的方向,这就是为什么没成功~

正确的解决方法:使用appendTo配置项

jQuery UI Dialog提供了官方支持的appendTo选项,专门用来指定对话框容器要追加到哪个父元素里。你只需要把这个选项加到你的Dialog配置中就行,比在回调里手动移动要更简洁可靠。

修改后的代码示例:

$(termsHTML).dialog({
  modal: true,
  resizable: false,
  width: 400,
  height: 600,
  closeOnEscape: false,
  appendTo: '#mainarea', // 这里就是关键配置!
  open: function (event, ui) {
    $(this).parent().children().children('.ui-dialog-titlebar-close').hide();
  },
  title: "Terms &amp; Conditions",
  // 其他配置项...
});

为什么之前的方法没成功?

  • append:'#mainarea'不是Dialog的有效配置参数,官方文档里没有这个选项,所以设置了也不会生效;
  • 你在open回调里写的(test).append('#mainarea')是把#mainarea元素追加到对话框的父容器里,这和你想要的方向完全相反了。如果一定要在回调里手动移动,正确的写法应该是:
open: function (event, ui) {
  $(this).parent().appendTo('#mainarea'); // 把对话框父容器追加到#mainarea里
  $(this).parent().children().children('.ui-dialog-titlebar-close').hide();
}

不过还是更推荐直接用appendTo配置项,这是官方设计的标准用法,代码更清晰也不容易出错。

内容的提问来源于stack exchange,提问作者maryjane

火山引擎 最新活动