【问题标题】:jQuery UI selectmenus breaks layoutjQuery UI 选择菜单打破了布局
【发布时间】:2012-01-27 19:43:47
【问题描述】:

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

它运行良好,但是当我在页面底部添加一个选择菜单时,会发生这种情况:

如何解决此问题,当SelectMenu在底部,下拉菜单上方而不是以下?

我使用的 JS:

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

【问题讨论】:

    标签: jquery-ui select select-menu


    【解决方案1】:

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

    来自 GitHub 的版本使用来自 jQuery UI 的 jquery.ui.position,它允许您指定相对于元素显示菜单的位置(“top top”、“left bottom”.. .) 并且还允许碰撞检测

    来自documentation

    当定位元素在某个方向溢出窗口时, 将其移动到另一个位置。类似于 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 ""
        }
    });
    

    检查以下question 以了解解释的类似问题(_refreshPosition() 方法似乎不再存在,但选项位置当然仍然存在)。

    【讨论】:

    • 嗨,当我使用新的 jquery.ui.select.js 时出现此错误:jquery.ui.select.js:46 - Uncaught TypeError: Object # has no method '_bind ' - 在我的第一篇文章中,我添加了我的 JS。
    • 插件基于 jQuery UI 1.9(仍在开发中!),其中 Widget Factory 实现了 _bind() 方法。你必须使用 jQuery UI 1.9。
    • 当我使用这个版本时,一切都会工作吗?因为我将 UI 用于更多插件...
    • 我怎么知道? :-) 您最好的选择是针对这个新版本测试您的网站,看看一切是否按预期工作,这完全您自己承担风险。许多插件正在重新设计代码,因此肯定存在风险。
    • 嗯,我不会使用 Beta 版 UI,因为我正忙于一些客户,但感谢您的帮助。我希望会有另一个修复它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    • 2016-07-05
    • 1970-01-01
    • 2018-03-15
    • 2012-09-05
    相关资源
    最近更新 更多