diff --git a/packages/actionsheet/en-US.md b/packages/actionsheet/en-US.md
index c64cce786..fc15c721e 100644
--- a/packages/actionsheet/en-US.md
+++ b/packages/actionsheet/en-US.md
@@ -84,7 +84,7 @@ Actionsheet will get another style if there is a `title` prop.
| overlay | Whether to show overlay | `Boolean` | `true` |
| close-on-click-overlay | Whether to close when click overlay | `Boolean` | `true` |
| lazy-render | Whether to lazy render util appeared | `Boolean` | `true` |
-| get-container | Return the mount node for actionsheet | `() => HTMLElement` | - |
+| get-container | Return the mount node for actionsheet | `String | () => HTMLElement` | - |
### Event
diff --git a/packages/actionsheet/zh-CN.md b/packages/actionsheet/zh-CN.md
index d5cf75212..c711704b3 100644
--- a/packages/actionsheet/zh-CN.md
+++ b/packages/actionsheet/zh-CN.md
@@ -88,7 +88,7 @@ export default {
| overlay | 是否显示遮罩层 | `Boolean` | `true` |
| close-on-click-overlay | 点击遮罩是否关闭菜单 | `Boolean` | `true` |
| lazy-render | 是否在首次显示弹层时才渲染 DOM 节点 | `Boolean` | `true` |
-| get-container | 指定挂载的 HTML 节点 | `() => HTMLElement` | - |
+| get-container | 指定挂载的节点,可以传入 CSS 选择器,
或一个返回 DOM 节点的函数 | `String | () => HTMLElement` | - |
### Event
diff --git a/packages/dialog/en-US.md b/packages/dialog/en-US.md
index 5077f61c4..c6ad806ad 100644
--- a/packages/dialog/en-US.md
+++ b/packages/dialog/en-US.md
@@ -141,7 +141,7 @@ export default {
| close-on-click-overlay | Whether to close when click overlay | `Boolean` | `false` |
| lock-scroll | Whether to lock background scroll | `Boolean` | `true` |
| before-close | Callback before close,
call done() to close dialog,
call done(false) to cancel loading | (action: string, done: function) => void | - |
-| get-container | Return the mount node for Dialog | `() => HTMLElement` | - |
+| get-container | Return the mount node for Dialog | `String | () => HTMLElement` | - |
### Event
diff --git a/packages/dialog/zh-CN.md b/packages/dialog/zh-CN.md
index 54ee13df6..4e8759c18 100644
--- a/packages/dialog/zh-CN.md
+++ b/packages/dialog/zh-CN.md
@@ -144,7 +144,7 @@ export default {
| close-on-click-overlay | 点击蒙层时是否关闭弹窗 | `Boolean` | `false` |
| lock-scroll | 是否锁定背景滚动 | `Boolean` | `true` |
| before-close | 关闭前的回调函数,
调用 done() 后关闭弹窗,
调用 done(false) 可以阻止弹窗关闭 | (action: string, done: function) => void | - |
-| get-container | 指定弹窗挂载的 HTML 节点 | `() => HTMLElement` | - |
+| get-container | 指定挂载的节点,可以传入 CSS 选择器,
或一个返回 DOM 节点的函数 | `String | () => HTMLElement` | - |
### Event
diff --git a/packages/mixins/popup/index.js b/packages/mixins/popup/index.js
index cdd21e806..63b232942 100644
--- a/packages/mixins/popup/index.js
+++ b/packages/mixins/popup/index.js
@@ -21,7 +21,7 @@ export default {
// z-index
zIndex: [String, Number],
// return the mount node for popup
- getContainer: Function,
+ getContainer: [String, Function],
// prevent body scroll
lockScroll: {
type: Boolean,
@@ -139,10 +139,20 @@ export default {
},
move() {
- if (this.getContainer) {
- this.getContainer().appendChild(this.$el);
+ let container;
+
+ const { getContainer } = this;
+ if (getContainer) {
+ container =
+ typeof getContainer === 'string'
+ ? document.querySelector(getContainer)
+ : getContainer();
} else if (this.$parent) {
- this.$parent.$el.appendChild(this.$el);
+ container = this.$parent.$el;
+ }
+
+ if (container) {
+ container.appendChild(this.$el);
}
},
diff --git a/packages/popup/en-US.md b/packages/popup/en-US.md
index 29265a2cf..fa99f215c 100644
--- a/packages/popup/en-US.md
+++ b/packages/popup/en-US.md
@@ -48,7 +48,7 @@ Use `position` prop to set popup display position
| transition | Transition | `String` | `popup-slide` |
| lock-scroll | Whether to lock background scroll | `Boolean` | `true` |
| lazy-render | Whether to lazy render util appeared | `Boolean` | `true` |
-| get-container | Return the mount node for Popup | `() => HTMLElement` | - |
+| get-container | Return the mount node for Popup | `String | () => HTMLElement` | - |
### Event
diff --git a/packages/popup/test/index.spec.js b/packages/popup/test/index.spec.js
index 405e61dc1..82539fa5f 100644
--- a/packages/popup/test/index.spec.js
+++ b/packages/popup/test/index.spec.js
@@ -76,6 +76,26 @@ test('get container with parent', () => {
expect(popup.parentNode).toEqual(wrapper.element);
});
+test('get container with selector', () => {
+ wrapper = mount({
+ template: `
+