Twitter Bootstrap:closures下拉菜单时调用js函数
是否有一个事件,我可以配合成,当引导下拉列表closures或切换触发?
这是Bootstrap v2.3.2如何closures菜单,无论你点击什么:
$('html').on('click.dropdown.data-api', function () { $el.parent().removeClass('open') });
如果您使用的是v2.x,则可以使用它来知道菜单何时closures。 但是,请记住,每次点击都会触发。 如果在菜单真的closures时(这可能是所有的时间)只需要执行某些操作,那么首先需要打开一个菜单。 被接受的答案在这方面可能是更好的解决办法。
然而,在Boostrap v3.0.0中,下拉菜单支持四个单独的事件:
show.bs.dropdown :当show instance方法被调用时,这个事件立即触发。
shown.bs.dropdown当下拉对用户可见时(等待CSS转换完成),这个事件被触发。
hide.bs.dropdown当调用隐藏实例方法时立即触发此事件。
hidden.bs.dropdown当下拉菜单完成后,用户将隐藏这个事件(等待CSS转换完成)。
从Bootstrap的文档 。
从twitter bootstrap官方网页 :
$('#myDropdown').on('hide.bs.dropdown', function () { // do something… });
hide.bs.dropdown
是这里描述的4个事件之一 。
更新(16-Apr-16)
这些事件在Bootstrap 4
也是一样的。 Bootstrap v4文档 。
最后,我发现唯一可靠的方法是使用jquery的数据API来存储下拉的状态,并将点击事件添加到button和文档。
$(document).ready(function() { $('#dropdown').data('open', false); $('#dropdown-button').click(function() { if($('#dropdown').data('open')) { $('#dropdown').data('open', false); update_something(); } else $('#dropdown').data('open', true); }); $(document).click(function() { if($('#dropdown').data('open')) { $('#dropdown').data('open', false); update_something(); } }); });
没有logging的事件,但是您可以使用.open
类和jQuery click()
事件:
$('#the-dropdown').click(function () { if($(this).hasClass('open')) { alert('it works'); } });
切换时,只需使用click()
事件。
这是jsfiddle。
诺兰,我假设你的意思是“这不起作用”是:当用户点击页面上的其他任何地方,并没有正确closuresbutton/下拉菜单。 您可以通过以下方式监控这些点击(文档的任何位置):
$(document).click(function() { //check which element was clicked on });
我做了我的如下所示。
HTML:
<ul class="nav navbar-nav navbar-right"> <li id="theme_selector" class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">Theme <b class="caret"></b></a> <ul id="theme" class="dropdown-menu" role="menu"> <li><a href="#">Amelia</a></li> <li><a href="#">Cerulean</a></li> <li><a href="#">Cyborg</a></li> <li><a href="#">Cosmo</a></li> <li><a href="#">Darkly</a></li> <li><a href="#">Flatly</a></li> <li><a href="#">Lumen</a></li> <li><a href="#">Simplex</a></li> <li><a href="#">Slate</a></li> <li><a href="#">Spacelab</a></li> <li><a href="#">Superhero</a></li> <li><a href="#">United</a></li> <li><a href="#">Yeti</a></li> </ul> </li> </ul>
脚本
$('#theme li').click(function () { switch_style($(this).text()); });
很好用