如何将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 & 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




