我的应用程序是基于Yii2和bootstrap 4构建的。我使用了Bootstrap 4“ TheEvent”主题(1页),并成功将其自定义到我的多页网站中,但是我在“ Active”网站上呆了好几天状态菜单。无论我单击哪个导航菜单,“菜单激活”状态都不会改变。我尝试了许多发现here的解决方案,但是都没有用。
这是我的导航菜单HTML:
<ul class="nav-menu">
<li class="menu-active"><a href="index">Home</a></li>
<li><a href="about">About</a></li>
<li><a href="news">News</a></li>
<li><a href="cabang">Cabang</a></li>
<li><a href="contact">Contact</a></li>
<?php if(Yii::$app->user->isGuest) { ?>
<li><a href="login">Login</a></li>
这是我的布局文件中的JS:
<?php
$script = <<< JS
$(document).ready(function() {
$(document).on('click', '.nav-menu a', function (e) {
$(this).parent().addClass('menu-active').siblings().removeClass('menu-active');
});
});
JS;
$this->registerJs($script)
?>
这是主题main.js的一部分,我发现它与“菜单激活”状态有关:
// Smooth scroll for the menu and links with .scrollto classes
$('.nav-menu a, #mobile-nav a, .scrollto').on('click', function() {
if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
var target = $(this.hash);
if (target.length) {
var top_space = 0;
if ($('#header').length) {
top_space = $('#header').outerHeight();
if( ! $('#header').hasClass('header-fixed') ) {
top_space = top_space - 20;
}
}
$('html, body').animate({
scrollTop: target.offset().top - top_space
}, 1500, 'easeInOutExpo');
if ($(this).parents('.nav-menu').length) {
$('.nav-menu .menu-active').removeClass('menu-active');
$(this).closest('li').addClass('menu-active');
}
if ($('body').hasClass('mobile-nav-active')) {
$('body').removeClass('mobile-nav-active');
$('#mobile-nav-toggle i').toggleClass('fa-times fa-bars');
$('#mobile-body-overly').fadeOut();
}
return false;
}
}
});
这些是JS资产。他们中的大多数与动画有关,所以我认为这与活动菜单状态无关
'lib/easing/easing.min.js',
'lib/superfish/hoverIntent.js',
'lib/superfish/superfish.min.js',
'lib/wow/wow.min.js',
'lib/venobox/venobox.min.js',
'lib/owlcarousel/owl.carousel.min.js',
'contactform/contactform.js',
'js/main.js'
我什至删除了所有的“ main.js”文件,以查看我的代码是否可以运行,但是仍然相同。 “菜单激活”一直停留在我的“主页” /索引菜单上。
提前谢谢!