以下の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)
以前のバージョンのブートストラップではこれにいくつかの問題があったことは知っていますが、現在のバージョンでは同様の問題の詳細を見つけることができませんでした。
Durandalでルータープラグインを使用しています。router.jsのcompleteNavigationメソッドに次のコード行を追加することでこれを修正しました。
$('li[class="dropdown open"]').removeClass('open');
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加