【问题标题】:JS select2 plugin not scrolling when options are openJS select2插件在选项打开时不滚动
【发布时间】:2019-03-31 10:31:43
【问题描述】:

我正在使用 JS Select2 库作为多个选项选择。选择位于 div 内,它由其父 div 滚动,css - overflow-y: scroll。嵌套的 div 滚动良好,直到打开一个选项。打开选项后,div @ of tail-scrollable ,除非 em>它被滚动在选择选项上。不确定问题的根源是我的 html/css 还是 select2 lib。

提前感谢您的帮助!

我的标记:

<div id="topcontainer" style="padding-top: 100px; overflow-y: scroll;  position: absolute; height: 1000px; width: 500px; background: #6d3353">
<div id="parent" style="position: relative; height: 3000px; width: 200px; background: #e4b9b9">
    <select class="js-example-basic-multiple" name="states[]" multiple="multiple">
        <option value="AL">aaaaaaa</option>
        <option value="AL">bbbbbbb</option>
        <option value="AL">ccccccc</option>
        <option value="WY">ddddddd</option>
    </select>
    <script>

        $(document).ready(function () {
            $('.js-example-basic-multiple').select2();
        });
    </script>
</div>

【问题讨论】:

    标签: javascript html css jquery-select2


    【解决方案1】:

    Select2 拦截滚动,如您在select2 source code 中看到的那样。

    我认为这不是问题而是一个功能,因为当你打开它时你想要滚动它,而不是父母。

    无论如何,查看select2 events 我发现我们可以通过使用“select2:open”事件并删除添加的 “scroll.select2”命名空间事件。

    例子:

         $('#states').select2({
             dropdownParent: $('#parent')
          });
          $('#states').on('select2:open', function (e) {
            const evt = "scroll.select2";
            $(e.target).parents().off(evt);
            $(window).off(evt);
          });
    

    你可以在这里测试它:Jsbin

    【讨论】:

    • 感谢您的回答,工作就像一个魅力!你说“你想滚动它,而不是父母。”但在我的情况下,你的解决方案表现为嵌套滚动,这正是我所需要的。太棒了!
    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    • 1970-01-01
    • 2016-08-03
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多