Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery将活动类从a更改为li_Javascript_Jquery_Html - Fatal编程技术网

Javascript jQuery将活动类从a更改为li

Javascript jQuery将活动类从a更改为li,javascript,jquery,html,Javascript,Jquery,Html,我们使用一些jQuery使我们的导航从页面上的某个点开始保持粘性,并向页面上的各个部分添加一个活动类。当前,活动类已添加到li中的a类中。但是我想把它添加到li中,而不是a href 我怎样才能做到这一点 代码: $j(窗口)。滚动(函数(){ var sticky=$j('.menu header product'), scroll=$j(窗口).scrollTop(); var elementOffset=jQuery(“#productnav”).offset(); 如果(滚动>=ele

我们使用一些jQuery使我们的导航从页面上的某个点开始保持粘性,并向页面上的各个部分添加一个活动类。当前,活动类已添加到li中的a类中。但是我想把它添加到li中,而不是a href

我怎样才能做到这一点

代码:


$j(窗口)。滚动(函数(){
var sticky=$j('.menu header product'),
scroll=$j(窗口).scrollTop();
var elementOffset=jQuery(“#productnav”).offset();
如果(滚动>=elementOffset.top-57)sticky.addClass('sticky');
else sticky.removeClass('sticky');
});
$j(窗口)。滚动(函数(){
var sticky=$j('.content'),
scroll=$j(窗口).scrollTop();
var elementOffset=jQuery(“#productnav”).offset();
如果(滚动>=elementOffset.top-57)sticky.addClass('sticky');
else sticky.removeClass('sticky');
});
$j(文档).ready(函数(){
$j(文件).on(“滚动”,onScroll);
$j('a[href^=“#”]”)。在('click',函数(e)上{
e、 预防默认值();
$j(文件)。关闭(“滚动”);
$j('li')。每个(函数(){
$j(this.parent().removeClass('active');
})
$j(this.parent().addClass('active');
var target=this.hash;
$j目标=$j(目标);
$j('html,body').stop().animate({
'scrollTop':$jtarget.offset().top-120/**只需减去固定html部分的高度即可*/
},500,'swing',函数(){
window.location.hash=目标;
$j(文件).on(“滚动”,onScroll);
});
});
});
函数onScroll(事件){
var scrollPosition=$j(document.scrollTop();
$j('nav li')。每个(功能(){
var currentLink=$j(本);
var refElement=$j(currentLink.attr(“href”);
if(refElement.position().top-位置){
$j('nav ul li a').parent().removeClass(“活动”);
currentLink.parent().addClass(“活动”);
}
否则{
currentLink.parent().removeClass(“活动”);
}
});
}
您可以使用jQuery的选择器。所以

$j(this).addClass('active');
变成

$j(this).parent().addClass('active');

您还需要将选择器
$j('a')
更改为
$j('li')
。我建议在导航中只过滤
li
s,即
$j('nav li')
。最后,您必须以类似方式更新onScroll事件。

$j(this.addClass('active')=>
$j(this).parent(“li”).addClass(“active”)我试过了,请看上面我的新代码,但它似乎不起作用。我做错了什么?您是否尝试过使用开发工具检查元素(在chrome中,右键单击>检查元素)?这将告诉您该类将应用于哪个元素。也许这个类正在被添加,但是你的CSS没有?
$j(this).parent().addClass('active');