jquery - 如何阻止 JQuery 菜单从屏幕上消失以获得更大的菜单?

标签 jquery jquery-ui jquery-ui-menu

我有一个 JQuery 菜单,我需要它始终在屏幕上保持可见。因此,如果子菜单与窗口底部重叠,它应该“向上”移动。

例如enter image description here

它似乎适用于较小的菜单(例如 5 个或更少的项目),但奇怪的是,较大的菜单似乎永远不会向上移动。

jsfiddle example - 比较菜单项 C>1E 和 C>1F(您可能需要调整窗口大小,以便它们实际上与底部重叠)

enter image description here

HTML:

<div id="container" style="width: 250px;">
          <ul id="filter-menu-button-menu">
            <li><a href="#"><span class="ui-icon ui-icon-disk"></span>A</a></li>
            <li><a href="#"><span class="ui-icon ui-icon-disk"></span>B</a></li>
            <li><a href="#"><span class="ui-icon ui-icon-folder-open"></span>C</a>
              <ul>
                <li><a href="#">1A</a></li>  
                <li><a href="#">1B</a></li> 
                  <li><a href="#">1C</a></li> 
                  <li><a href="#">1D</a></li> 
                  <li><a href="#">1E</a>
                      <ul>
                  <li><span class="ui-icon ui-icon-trash"></span><a href="#">1</a></li>
                      <li><span class="ui-icon ui-icon-trash"></span><a href="#">2</a></li>
                      <li><span class="ui-icon ui-icon-trash"></span><a href="#">3</a></li>
                      <li><span class="ui-icon ui-icon-trash"></span><a href="#">4</a></li>
                          <li><span class="ui-icon ui-icon-trash"></span><a href="#">5</a></li>
                                        <li><span class="ui-icon ui-icon-trash"></span><a href="#">6</a></li>

                      </ul>
                  </li> 
                  <li><a href="#">1F</a>
                  <ul>
                     <li><span class="ui-icon ui-icon-trash"></span><a href="#">1</a></li>
                                        <li><span class="ui-icon ui-icon-trash"></span><a href="#">2</a></li>
                                        <li><span class="ui-icon ui-icon-trash"></span><a href="#">3</a></li>
                                        <li><span class="ui-icon ui-icon-trash"></span><a href="#">4</a></li>
                                        <li><span class="ui-icon ui-icon-trash"></span><a href="#">5</a></li>                   
                  </ul>
                </li>
              </ul>
            </li>
          </ul> 
</div>

CSS:

$('#filter-menu-button-menu').menu({
    "position": { my: "right top", at: "left top" }
});

任何人都可以解释为什么会发生这种情况吗?这是 JQuery UI 中的错误吗?谁能提出解决方法吗?

最佳答案

您可能想查看 .position() 的碰撞选项

<强> Working Example

$('#filter-menu-button-menu').menu({
    "position": {
        my: "right top",
        at: "left top",
        collision: 'flipfit'
    }
});

"flipfit": First applies the flip logic, placing the element on whichever side allows more of the element to be visible. Then the fit logic is applied to ensure as much of the element is visible as possible.

关于jquery - 如何阻止 JQuery 菜单从屏幕上消失以获得更大的菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23428750/

相关文章:

javascript - 使用 jQuery 获取通过 DOM 操作插入的表单元素的值

jQuery UI 可排序点击事件

javascript - jQueryUI 使用 $.ajax 从文本/csv 文件自动完成数据

jquery - 有没有办法强制 jQuery UI 菜单子(monad)菜单始终向上而不是向下定位?

jQueryUI 菜单隐藏

anchor 击区域内的jquery菜单复选框

javascript - Laravel-Vuejs : Remove repeated time slots

javascript - 如何使用 jQuery 将单击时 div 的位置更改为父 div 的中心?

javascript - AJAX 和 JSON 错误处理

javascript - jQuery DatePicker - 启用特定日期 - 代码不工作