Javascript Bootstrap4滚动间谍-活动到父li
我有这样的bootstrap4菜单:Javascript Bootstrap4滚动间谍-活动到父li,javascript,bootstrap-4,Javascript,Bootstrap 4,我有这样的bootstrap4菜单: <ul class="navbar-nav ml-auto"> <li class="nav-item"><a class="nav-link" href="#introduction">INTRODUKTION <span class="sr-only">(current)</span></a></li> </ul> 默认scroll spy将活动添加
<ul class="navbar-nav ml-auto">
<li class="nav-item"><a class="nav-link" href="#introduction">INTRODUKTION <span class="sr-only">(current)</span></a></li>
</ul>
默认scroll spy将活动添加到导航链接(a)我需要更改此设置,因为我的活动应该在导航项目(li)之后。我可以这样做吗
你可以在这里看到:
当我单击时,一切正常-但在滚动时-active是a href。默认情况下
。active
类将仅添加到锚定标记
根据您的要求尝试类似的方法
$('[data-spy="scroll"]').on('activate.bs.scrollspy', function () {
$(".navbar-nav .active").removeClass("active").parent().addClass("active");
})
添加属性data spy=“scroll”
在带有id=“introduction”
像
我找到了解决方案。我只需要添加新事件(cssClassChanged)-并开始工作
(function(){
// Your base, I'm in it!
var originalAddClassMethod = jQuery.fn.addClass;
jQuery.fn.addClass = function(){
// Execute the original method.
var result = originalAddClassMethod.apply( this, arguments );
// trigger a custom event
jQuery(this).trigger('cssClassChanged');
// return the original result
return result;
}
})();
然后
$(".nav-link").bind('cssClassChanged' , function(e) {
$(".nav-item").each( function() {
if( $(this).hasClass("active") == true ) {
$(this).removeClass("active");
}
});
$(this).removeClass("active").parent().addClass("active");
});
能否添加一个代码段
$('.nav link').removeClass('active')代码>应该为您删除活动类。@David我不想删除它,我需要更改活动类的位置。默认情况下,active放在href元素中-我需要将active类名的位置更改为nav-item@NikhilGhuse链接added@GrzegorzMiśkiewicz scrollspy未在您的页面中工作$('[data spy=“scroll”]')。on('activate.bs.scrollspy',function(){console.log('test');});不起作用-没有效果:-(我试着这样做OK-现在我在家!谢谢你!我太快了-根本不起作用。它使菜单的最后一个元素处于活动状态,就这样。没有滚动事件,正在进行更改。可能这是bs4中的错误