2

以下の HTML に従って、nav ul 要素内に Bootstrap (バージョン 2.3.2) ドロップダウンがあります。IE でドロップダウンの項目をクリックすると、ドロップダウン リストが閉じます - これは正しい動作のようです - そして確かに私が望むものです。Firefox、Chrome、および Safari では、ドロップダウン リストが閉じません。

<nav class="navbar navbar-fixed-top">
    <div class="navbar-inner">
        <a class="brand" href="/">
            <span class="title">Doc Assembler</span>
        </a>

        <div class="loader pull-left" data-bind="css: { active: showLoader }">
            <i class ="icon-spinner icon-2x icon-spin" ></i>
        </div>

        <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
        </a>

        <div class="nav-collapse collapse">
            <ul class="nav" data-bind="foreach: navRoutes">
                <li><a data-bind="css: { active: isActive() }, attr: { href: hash }, text: name"></a></li>
            </ul>

            <ul class="nav">
                <li class="dropdown">
                    <a class="dropdown-toggle" data-toggle="dropdown" href="#">
                        <i class="icon-cogs"/> Admin<b class="caret"></b>
                    </a>
                    <ul class="dropdown-menu pull-right">
                        <!-- ko foreach: adminRoutes -->
                        <li><a data-bind="attr: { href: hash }, html: caption"></a>
                        <!-- /ko -->
                    </ul>
                </li>
                <li><a data-bind="click: logOff" href="#"><i class="icon-signout"/> Log Off</a></li>
            </ul>
        </div>
    </div>
</nav>

ブートストラップの clearMenus メソッドが IE で呼び出されていることがわかりますが、アイテムがクリックされたときに他のブラウザーでは呼び出されません。メニューが開かれると、すべてのブラウザーで clearMenus が呼び出されます。ブートストラップの次のコードと関係があると思います:

$(document)
    .on('click.dropdown.data-api', clearMenus)
    .on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
    .on('click.dropdown.data-api'  , toggle, Dropdown.prototype.toggle)
    .on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)

ブートストラップの以前のバージョンでこれにいくつかの問題があったことは知っていますが、現在のバージョンで同様の問題を詳述するものを見つけることができませんでした.

4

1 に答える 1

1

Durandal で Router プラグインを使用しています。router.js の completeNavigation メソッドに次のコード行を追加して、これを修正しました。

$('li[class="dropdown open"]').removeClass('open');
于 2013-08-26T07:00:59.983 に答える