【发布时间】:2015-04-17 17:26:28
【问题描述】:
我有一个带有链接的导航栏。 “品牌”链接有效,但ul 中没有任何功能。我读过关于e.preventDefault(); 与$('ul.nav > li').click(function (e) { 一起出现问题的内容。我也读过它与z-index 有关的地方。我没有发现任何一种情况(除非我找不到它嵌入在应用程序加载的js 文件中,而不是驻留在我的资产文件夹中)。
这是什么原因造成的?
我不确定它是在css 还是js 文件中。
此外,切换效果很好,它只是活动链接。
<head>
<title>Welcome</title>
<meta charset='utf-8'>
<meta content='IE=edge' http-equiv='X-UA-Compatible'>
<meta content='width=device-width, initial-scale=1' name='viewport'>
<meta content='' name='description'>
<meta content='' name='author'>
<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="PZfcHJlhwRF4SMTlLODmWg4gv/d8eli2VqnZm1i/dnjyUhKjUkZXq+2jeMjfU/eYiArG5oU0Ur1VG6GLBYik6Q==" />
<link rel="stylesheet" media="screen" href="/assets/rails_bootstrap_forms-85a44da0cf14906976bde10ea0a42bbc.css?body=1" />
<link rel="stylesheet" media="screen" href="/assets/application-7b065b027fe33201010948bc34f4a7db.css?body=1" />
<link rel="stylesheet" media="screen" href="/assets/font-awesome.min-c657d02924cca8259559612983a6a227.css?body=1" />
<link rel="stylesheet" media="screen" href="/assets/modern-business-788410311885bd8eb9a8a947b93e1c6f.css?body=1" />
<script src="/assets/bootstrap-f069863cd7c15927c7faef4bba9fc907.js?body=1"></script>
<script src="/assets/bootstrap.min-759065b3d223bc01ce2f7ad79e06c909.js?body=1"></script>
<script src="/assets/contact_me-55e60d5e2f601e0adf79fc9dea175bf3.js?body=1"></script>
<script src="/assets/jqBootstrapValidation-d5764d00e4f4b8d79882008d22d482fa.js?body=1"></script>
<script src="/assets/jquery-89fdfdd2b961da1c1dac57e8beeff312.js?body=1"></script>
<script src="/assets/application-467c055a5b9b03c420678f7bae6bd21f.js?body=1"></script>
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]> <![endif]-->
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<nav class='navbar navbar-inverse navbar-fixed-top' role='navigation'>
<div class='container'>
<!-- Brand and toggle get grouped for better mobile display -->
<div class='navbar-header'>
<button class='navbar-toggle' data-target='#bs-example-navbar-collapse-1' data-toggle='collapse' type='button'>
<span class='sr-only'>Toggle navigation</span>
<span class='icon-bar'></span>
<span class='icon-bar'></span>
<span class='icon-bar'></span>
</button>
<a class='navbar-brand' href='/'>Brand</a>
</div>
<div class='collapse navbar-collapse' id='bs-example-navbar-collapse-1'>
<ul class='nav navbar-nav navbar-right'>
<li><a href='/about.html'>About</a></li>
<li><a href='/services.html'>Services</a></li>
<li><a href='/contact.html'>Contact</a></li>
<li class='dropdown'>
<a class='dropdown-toggle' data-toggle='dropdown' href='#'>
Portfolio
<b class='caret'></b></a>
<ul class='dropdown-menu'>
<li>
<a href='/this.html'>This</a>
</li>
<li>
<a href='/that.html'>That</a>
</li>
<li>
<a href='/other.html'>The other</a>
</li>
</ul>
</li>
<li class='dropdown'>
<a class='dropdown-toggle' data-toggle='dropdown' href='#'>
Blog
<b class='caret'></b>
</a>
<ul class='dropdown-menu'>
<li>
<a href='/bikes.html'>Bikes</a>
</li>
<li>
<a href='/planes.html'>Planes</a>
</li>
<li>
<a href='/trains.html'>Trains</a>
</li>
</ul>
</li>
<li class='dropdown'>
<a class='dropdown-toggle' data-toggle='dropdown' href='#'>
Other Pages
<b class='caret'></b>
</a>
<ul class='dropdown-menu'>
<li>
<a href='/candy.html'>Candy</a>
</li>
<li>
<a href='/fruit.html'>Fruit</a>
</li>
<li>
<a href='/lost.html'>Lost</a>
</li>
<li>
<a href='/found.html'>Found</a>
</li>
<li>
<a href='/haircuts.html'>Hair Cuts</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
在检查元素时,我发现了一个错误...
TypeError: undefined is not an object (evaluating '$(target).offset().top') 指向 jquery.js 文件的这一部分。
//smooth scroll
$('.navbar-nav > li').click(function(event) {
event.preventDefault();
var target = $(this).find('>a').prop('hash');
$('html, body').animate({
scrollTop: $(target).offset().top // this line here
}, 500);
});
但是,当我查看 jquery 文档 (http://api.jquery.com/event.preventdefault/) 时,它说“如果调用此方法,则不会触发事件的默认操作。”。所以看起来可能是这种情况,但我不确定如何解决它。
【问题讨论】:
-
您是否尝试过为链接提供“navbar-link”类?代码看起来正确。还要确保链接正确。尝试为其中一个链接添加“Google .com”或其他内容以进行测试。
-
我希望只使用引导 css 而不必添加类。那不应该是引导CSS的一部分吗?这是我第一次遇到这种情况,并且我已将引导程序用于其他导航栏菜单。这是第一次实现别人制作的模板。
-
尝试删除顶部 ul 标签上的 navbar-right 类,然后尝试点击链接。评论他们是否在工作。
-
我试过@zazu,但它只是将内容移到了左边。
-
请包含更多 HTML,否则很难猜测发生了什么。作为一种变体,我可以建议检查链接上的处理程序。
标签: javascript jquery html css twitter-bootstrap