【发布时间】:2015-06-13 09:06:37
【问题描述】:
当用户滚动到它时,我尝试使用waypoints.js 并激活菜单元素。如我所见,航点运行良好,但我无法获得当前部分id...控制台总是说undefined。
那么,我做错了什么?
我的脚本是:
jQuery(function() {
var sections = jQuery('section');
var navigation_links = jQuery('nav a');
sections.waypoint({
handler: function(direction) {
var active_section;
active_section = jQuery(this);
if (direction === "up") active_section = active_section.prev();
var active_link = jQuery('nav a[href="#' + active_section.attr("id") + '"]');
navigation_links.parent().removeClass("active");
active_link.parent().addClass("active");
active_section.addClass("active-section");
console.log(active_section.attr("id"))
},
offset: '35%'
});
});
我的 HTML nav 是:
<ul class="nav">
<li><a href="#home">Home</a></li>
<li><a href="#spec">What we do</a></li>
<li><a href="#features">Features</a></li>
<li><a href="#tools">Tools</a></li>
<li><a href="#contacts">Contacts</a></li>
</ul>
我的 HTML section 是:
<section id="home">
<div class="wrap">
<h1>...</h1>
</div>
</section>
【问题讨论】:
-
我认为你的问题可能出在这一行` if (direction === "up") active_section = active_section.prev();` 这将改变元素,也许前一个元素没有身份证
-
↑↑↑ 在得到它的 ID 之前检查一下
active_section是什么。它是预期的元素吗? -
@A. Wolff
active_section正确显示项目...但是如果我尝试获取其属性 ID,它会显示undefined。 @AmmarCSE 我试图完全删除它,但有同样的问题......:/ -
@s.spirit 提供复制您的问题的示例,例如 jsFiddle
-
我可以测试它,它按预期工作,仅当
home是活动部分时返回undefined,然后前一个元素不是部分jsfiddle.net/voew4bjk
标签: javascript jquery jquery-waypoints