jQuery UI 选择菜单破坏布局

发布于 2024-12-29 02:36:33 字数 527 浏览 0 评论 0原文

我正在使用这个插件:http://jquery-ui。 googlecode.com/svn/branches/labs/selectmenu/index.html (下拉样式)

它运行良好,但是当我在页面底部添加 selectmenu 时,会发生这种情况:

在此处输入图像描述

当选择菜单位于底部时,下拉菜单位于上方而不是下方,如何解决此问题?

我使用的JS:

$('select').not("select.multiple").selectmenu({
    style: 'dropdown',
    transferClasses: true,
    width: null
});

I am using this plugin: http://jquery-ui.googlecode.com/svn/branches/labs/selectmenu/index.html (dropdown style)

And it is working well but when i add a selectmenu at the bottom of my page then this happends:

enter image description here

How can i fix this that when the selectmenu is on the bottom that the dropdown comes above instead of under?

The JS i use:

$('select').not("select.multiple").selectmenu({
    style: 'dropdown',
    transferClasses: true,
    width: null
});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

┾廆蒐ゝ 2025-01-05 02:36:33

我认为您使用的版本不是最新的。您应该从 GitHub 存储库(这是官方存储库)检查源代码。

GitHub 的版本使用 jQuery UI 中的 jquery.ui.position,它允许您指定相对于元素的菜单显示位置(“顶部顶部”、“左侧底部”...)以及还允许碰撞检测

来自文档

当定位元素在某个方向溢出窗口时,
将其移动到另一个位置。与 my 和 at 类似,这接受
水平/垂直的单个值或一对,例如。 “翻转”、“适合”、
“适合翻盖”、“不适合”。

因此,您宁愿以这种方式使用该插件:

$('#myelement').selectmenu({
    ...
    position: {
        my: "left top", // default
        at: "left bottom", // default

        // "flip" will show the menu opposite side if there
        // is not enough available space

        collision: "flip"  // default is ""
    }
});

检查以下内容 问题对类似问题的解释(方法_refreshPosition()似乎不再存在,但选项位置当然是还在那里)。

I think the version you are using is not the very latest. You should check the source from the GitHub repository, which is the official repository.

The version from GitHub uses jquery.ui.position from jQuery UI, which allows you to specify where to display the menu relatively to the element ("top top", "left bottom"...) and also allows collision detection.

From the documentation:

When the positioned element overflows the window in some direction,
move it to an alternative position. Similar to my and at, this accepts
a single value or a pair for horizontal/vertical, eg. "flip", "fit",
"fit flip", "fit none".

So you'd rather use the plugin this way:

$('#myelement').selectmenu({
    ...
    position: {
        my: "left top", // default
        at: "left bottom", // default

        // "flip" will show the menu opposite side if there
        // is not enough available space

        collision: "flip"  // default is ""
    }
});

Check the following question for similar problem explained (the method _refreshPosition() seems to not exist anymore as is but the option position is of course still there).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文