所以我在这里有一些代码可以通过将其添加到具有header_default类的任何东西来动态生成引导程序导航栏。我的问题是我现在想要在动态导航栏上做一些。('点击')事件,尽管它并没有真正起作用。特别是当我按下导航栏的品牌部分时,我一直试图切换一些lorem ipsum。出于某种原因,开启('点击')警报会以这种方式正常运行,但没有别的办法。我已经尝试过.toggle(),. hide()和console.log(),但这些都不起作用。
我在同一个导航栏上测试了相同的点击事件代码,当时它不是由javascript生成的,而且工作正常。我仍然很擅长使用jquery / javascript,所以我和#39;我确定在这里犯了一个相当明显的错误。
我的HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<!--stylesheets-->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<title>Document</title>
</head>
<body>
<div class="container">
<!--Header-->
<nav id="page" class="header_default"></nav>
<!--Text-->
<div class="body-text">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Repellat autem dolorum, earum adipisci magni rem. Deserunt sed aut, ad neque cum nulla rem vitae quos ducimus esse voluptatibus maxime! Vel.</p>
</div>
</div>
</body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<script src="javascript.js"></script>
</html>
我的Javascript:
// Header
$(document).ready(function() {
if($('#page').hasClass("header_default")) {
$('<nav class="container header_default"><nav class="navbar navbar-default" role="navigation"><div class="navbar-header"><a class="navbar-brand" href="">Brand</a></div><div><ul class="nav navbar-nav"><li><a href="about.html">About</a></li><li><a href="contact.html">Contact</a></li><li><a href="privacy.html">Privacy Policy</a></li></ul></div></nav></nav>')
.prependTo( $('#page') )
} // append navbar
}); //document.ready
//Click event
$(document).on('click', '.navbar-brand', function() {
$('p').toggle("slow");
});
.prependTo()只是:
<nav class="header_default">
<nav class="navbar navbar-default" role="navigation">
<div class="navbar-header">
<a class="navbar-brand" href="#">Brand</a>
</div>
<div>
<ul class="nav navbar-nav">
<li><a href="about.html">About</a></li>
<li><a href="contact.html">Contact</a></li>
<li><a href="privacy.html">Privacy Policy</a></li>
</ul>
</div>
</nav><!--navbar-default-->
</nav><!-- container -->
答案 0 :(得分:2)
我也认为它与加载顺序有关。这是我尝试时的效果:
// Header
$(document).ready(function() {
if($('#page').hasClass("header_default")) {
$(longString)
.prependTo( $('#page') )
} // append navbar
$('.navbar-brand').on('click', function() {
$('p').toggle('slow');
});
}); //document.ready
这是一个example JSFiddle
旁注:longString
只是您想要prepend
的内容。我还更改了longString
以使所有链接指向#
,因此JSFiddle可以很好地使用它。
答案 1 :(得分:1)
我认为您的问题是在元素完成准备就绪之前启动的点击事件。
$(document).ready(function() {
if($('#page').hasClass("header_default")) {
$('<nav class="container header_default"><nav class="navbar navbar-default" role="navigation"><div class="navbar-header"><a class="navbar-brand" href="">Brand</a></div><div><ul class="nav navbar-nav"><li><a href="about.html">About</a></li><li><a href="contact.html">Contact</a></li><li><a href="privacy.html">Privacy Policy</a></li></ul></div></nav></nav>').prependTo( $('#page') )
} // append navbar
/*--move to here---*/
//Click event
$(document).on('click', '.navbar-brand', function() {
$('p').toggle("slow");
});
}); //document.ready