容器中的 JQuery 选择选择框溢出 : hidden

标签 jquery css jquery-chosen

我试图在我的应用程序中使用 chosen 来设置选择框的样式。不幸的是,当涉及到带有 overflow: hidden 的容器时,它的行为与 native 选择框不同。

当我打开弹出窗口时,它不会(或永远)不可见。

HTML:

<div class="layoutContainer">
    <select class="select-chosen">
        <option>Option A</option>
        <option>Option B</option>
        <option>Option C</option>
    </select>
    <select>
        <option>Option A</option>
        <option>Option B</option>
        <option>Option C</option>
    </select>
</div>

CSS:

.layoutContainer{
    background: #660066;
    overflow: hidden;
    height: 40px;
}

JavaScript:

$(document).ready(function(){
    $(".select-chosen").chosen({
        disable_search : true,
        width: "150px"
    });
});

这是对应的JsFiddle

这个问题有解决方案吗?

最佳答案

我今天遇到了同样的问题,做了一些基础研究并想出了一个快速的解决方案。

在函数 results_show() 中,找到以下几行:

this.search_field.focus();
this.search_field.val(this.search_field.val());
this.winnow_results();

在此之下,添加以下代码。

案例#A

你的容器就是窗口。

代码:

var _cont=$(window);

案例#B

您使用其他一些设置为溢出隐藏的容器。在此示例中,这将是一个给定类名 .layoutContainer 的元素。

代码:

var _cont=$(this.container).parentsUntil('.layoutContainer').parent();

然后,在上面任意一行的下方,添加以下代码:

var _containerHeight = _cont.height();
var _elementHeight = $(this.container).find('ul').height();
var _elementTop = $(this.container).offset().top;
var _xh=$(this.container).outerHeight();

if (_containerHeight - (_elementHeight + _elementTop) + _xh < 0) {
  this.dropdown.css({
      bottom: _xh,
      top: 'auto'
  });
} else {
  this.dropdown.css({
      top: _xh,
      bottom: 'auto'
  });
}

就是这样。

解释

我们只是收集所有必需的信息来计算下拉列表是否溢出包装容器(设置为过度滚动隐藏)。一旦我们有了它,我们检查它是否溢出,如果是,我们将它设置为使用基于底部的定位而不是基于顶部的定位。否则我们恢复到基于顶部的。

之所以可行,是因为下拉列表相对于 Chosen 容器定位,因此使用 bottom 会导致列表向上对齐。

注意事项

一旦下拉列表位于元素上方(而不是下方),.chosen-drop box-shadow 有点烦人。为了解决这个问题,我在元素溢出时动态添加了一个类,如果元素没有溢出则将其删除。

免责声明

这段代码并不完美!我没有做任何优化。我将它作为快速修复提供给自己,并想与遇到相同问题的其他求职者分享。

请随时发布对此的任何改进。

此代码采用当前版本 (1.1.0) 的 Chosen 的经典基本版本。

关于容器中的 JQuery 选择选择框溢出 : hidden,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18268578/

相关文章:

jquery - 如何将一个类分配给 jquery 按钮 var

jQuery - 显示画廊的前三张图像;隐藏剩余部分

css - MS Edge 中的 % 单位

javascript - jQuery 选择值

jquery - 使用Chosen时如何定位选择元素?

javascript - 从另一个表单发送值

javascript Cookie 每 24 小时在窗口打开代码中不起作用

css - 如果你设置了font-size,你会确定元素占据的高度吗?

CSS 从 CSS 文件中的最后一个对象而不是最近的父对象应用

jQuery 选择插件在 Bootstrap 模式上动态添加选项