我使用基本的Twitter Bootstrap导航栏作为我的菜单,现在我想在Stackoverflow上的系统灵感来自下拉列表中显示通知。为了实现这一点,我想在点击下拉列表时调用api,我需要" catch"下拉事件。根据{{3}},我需要抓住这样的事件:
$('#myDropdown').on('show.bs.dropdown', function () {
// do something…
})
所以我有一个the docs,但是当我在自己的html中使用完全相同的代码(见下文)时,它已经不再适用了。有谁知道下面的代码有什么问题:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<!-- jQuery -->
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<!-- Bootstrap -->
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="stylesheet">
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
<script type="text/javascript">
$('#jajaja').on('show.bs.dropdown', function () {
alert('Come on lets show the dropdown!!');
});
</script>
</head>
<body>
<div class="container">
<div class="row">
<div class="navbar navbar-default" role="navigation">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="/">My Website</a>
</div>
<div id="navbar" class="navbar-collapse">
<ul class="nav navbar-nav navbar-right" id="jajaja">
<li class="dropdown">
<a href="" id="notifications-header" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Notifications <span class="caret"></span></a>
<ul id="notifications" class="dropdown-menu" role="menu">
<li><span class="glyphicon glyphicon-refresh text-center" aria-hidden="true"></span></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
答案 0 :(得分:4)
这是因为您使用onload加载了javascript代码。请参阅左下角的onload选项。
因为你把代码放在头脑中而且你不要等到dom准备就绪。
检查dom是否准备就绪。可以这样做:
$(document).ready(function() {
$('#jajaja').on('show.bs.dropdown', function () {
alert('Come on lets show the dropdown!!');
});
});
或简而言之:
$(function() {
$('#jajaja').on('show.bs.dropdown', function () {
alert('Come on lets show the dropdown!!');
});
});
其他良好做法是在关闭正文</body>
之前放置所有javascript。