繁体   English   中英

重新打开或关闭下拉菜单后,请重置其详细信息

[英]Reset dropdown menu details after re-open or close it

代码:

<head>
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <script
    src="https://code.jquery.com/ui/1.9.2/jquery-ui.min.js"
    integrity="sha256-eEa1kEtgK9ZL6h60VXwDsJ2rxYCwfxi40VZ9E0XwoEA="
    crossorigin="anonymous"></script>
</head>
<body>

<div class="dropdown bigdiv">
  <button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">Dropdown Example
    <span class="caret"></span></button>
  <ul class="dropdown-menu bigul">
    <li>
        <a href="#" id="open_input">open_input</a>
    </li>

    <ul class="list-group test">
    </ul>
  </ul>
</div>

</body>
<script>
    $(document).ready(function () {
        var availableTags = [
            "ActionScript",
            "AppleScript",
            "Asp",
            "BASIC",
            "C",
            "C++",
            "Clojure",
            "COBOL",
            "ColdFusion",
            "Erlang",
            "Fortran",
        ];

        var ul_text = '    <li class="ui-widget">\n' +
            '<form role="form" style="">\n' +
            '                <div class="input-group input-group-sm" style="">\n' +
            '                  <input type="text" class="form-control" id="tags" placeholder="Enter email">\n' +
            '                </div>\n' +
            '              </form>\n' +
            '    </li>'

        $('#open_input').click(function (e) {
            $('.bigul').append(ul_text)

            $('#tags').autocomplete({
                    search: function(event, ui) {
                        $('.test').empty();
                    },
                    source: availableTags,
                    messages: {
                        noResults: '',
                        results: function() {}
                    }
                }).data('autocomplete')._renderItem = function(ul, item) {
                    return $('<li class="list-group-item"></li>')
                        .data('item.autocomplete', item)
                        .append(item.value)
                        .appendTo($('.test'));
                    };
            e.stopPropagation();
        });
    });
</script>

和jsfiddle: http : //jsfiddle.net/uMqyn/919/

在我的代码中,可以通过单击open_input或使用输入栏搜索内容来更改下拉菜单。

但是我想要,如果我关闭下拉菜单(无论是通过重新单击下拉按钮还是通过其他空白处单击),下拉菜单将作为初始状态刷新。

换句话说,无论何时打开下拉菜单,我都希望在下拉菜单上看到的内容保持不变-仅-

  <ul class="dropdown-menu bigul">
    <li>
        <a href="#" id="open_input">open_input</a>
    </li>

    <ul class="list-group test">
    </ul>
  </ul>

问题:我要求重新打开下一个下拉菜单时,无法看到下拉菜单上发生的任何更改。 我想使下拉菜单的初始状态保持不变。

我怎样才能做到这一点?

编辑:我意识到我们不能使用.focusout因为单击下拉菜单的子元素(例如输入文本)将清除其li.ui-widget子菜单的下拉菜单。

解决方案是使用Bootstrap下拉关闭事件hide.bs.dropdown来检测是否已关闭菜单。

$('.bigdiv').on('hide.bs.dropdown', function () {
    $('.bigul .ui-widget').remove()
    console.log('removing')
})

小提琴: http : //jsfiddle.net/uMqyn/924/

的想法来自: https : //stackoverflow.com/a/31444063/3891117

如果您使用的是Bootstrap v2.3.2,则在同一链接中说要使用click.dropdown.data-api事件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM