我有一个无序的链接列表,作为下面内容的过滤器。
链接1 链接2 链接3 链接4
点击任意链接后,“已激活”类会添加到已点击的链接中。这完全可以正常工作。
链接1 链接2 链接3(活动) 链接4
但是一旦我向下滚动页面,该链接就会消失,所以我希望“活动”链接通过添加另一个类“fixednav”来坚持到顶部。
链接3(有效)+(滚动时我希望此活动链接贴在顶部)
**我基本上需要将这两者与首先出现的主动点击小提琴结合起来:
我怎么写这个?
对于“active”类,我得到一个“Uncaught TypeError:无法读取未定义的属性'top'”。它还不存在,因为我没有点击任何过滤器。
过滤代码:
$('#filters a').click(function(){
if( $(this).is('.active') ) {
// don't do anything while class is active
}
else {
$('#filters a').removeClass('active'),
$(this).addClass('active');
}
});
滚动代码:
function fixDiv() {
var $div = $(".active");
if ($(window).scrollTop() > $div.data("top")) {
$('.active').addClass('fixednav');
}
else {
$('.active').removeClass('fixednav');
}
}
$(".active").data("top", $(".active").offset().top);
$(window).scroll(fixDiv);
答案 0 :(得分:0)
好吧,$('.active')
返回一组元素,而不是单个元素。
尝试使用类似$('.active:first')
的内容。
答案 1 :(得分:0)
尝试将$(".active").data("top", $(".active").offset().top);
移动到您的点击功能中,如下所示:
$('#filters a').click(function(){
var $this = $(this);
if(!$this.is('.active'))
{
$('#filters a').removeClass('active').removeData("top");
$this.addClass('active').data("top", $this.offset().top);
}
});