jquery - 单击链接后,Jquery nav Toogle 类活动不起作用
问题描述
我有问题,我有问题,我有带有 class="active" 或 inactive 链接的链接我写了 jquery 脚本,当你点击链接最后一个活动变得不活动并且点击变得活跃时,问题是当我点击脚本只工作半秒并且页面刷新和链接丢失以前的课程。登录后第一个链接应始终处于活动状态,因为登录首先重定向到他
导航代码
$(document).ready(function() {
$(function() {
var sidebar = $("#sidebar");
sidebar.delegate("a.inactive", "click", function(event) {
event.preventDefault();
sidebar.find(".active").toggleClass("active inactive");
$(this).toggleClass("active inactive");
});
});
});
.active { background-color: yellow; }
.inactive { background-color: grey; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="sidebar" class="nav-wrapper">
<ul class="nav flex-column">
<li class="nav-item">
<a class="nav-link active" href="{{ route('home') }}">
<i class="material-icons">edit</i>
<span>Darbuotojai</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link inactive" href="{{ url('/naujas') }}">
<i class="material-icons">vertical_split</i>
<span>Naujas darbuotojas</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link inactive" href="{{ url('/imones') }}">
<i class="material-icons">note_add</i>
<span>Įmonės</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link inactive" href="{{ url('/padaliniai') }}">
<i class="material-icons">note_add</i>
<span>Padaliniai</span>
</a>
</li>
</ul>
</div>
@if (\Request::is('home'))
<li class="nav-item">
<a class="nav-link active" href="{{ route('home') }}">
<i class="material-icons">edit</i>
<span>Darbuotojai</span>
</a>
</li>
@else
<li class="nav-item">
<a class="nav-link inactive" href="{{ route('home') }}">
<i class="material-icons">edit</i>
<span>Darbuotojai</span>
</a>
</li>
@endif
解决方案
.delegate已弃用
而是使用
sidebar.on("click","a.inactive", function (event) {
也删除$(document).ready(function() { })
- 不需要
添加sessionStorage处理以保持状态
$(function() {
const $sidebar = $("#sidebar");
$sidebar.on("click", "a.inactive", function(event) {
event.preventDefault(); // this statement will make the link NOT work
$sidebar.find(".active").toggleClass("active inactive");
$(this).toggleClass("active inactive");
});
$sidebar.on("click", "a.active", function(event) {
// sessionStorage.setItem("active",$(this).index()); // does not work in a snippet - uncomment on your page
})
const idx = 2; // sessionStorage.getItem("active") || 0; // uncomment and remove "2"
$sidebar.find(".active").toggleClass("active inactive");
$sidebar.find(".nav-link").eq(idx).toggleClass("active inactive");
});
.active {
background-color: yellow;
}
.inactive {
background-color: grey;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="sidebar" class="nav-wrapper">
<ul class="nav flex-column">
<li class="nav-item">
<a class="nav-link active" href="{{ route('home') }}">
<i class="material-icons">edit</i>
<span>Darbuotojai</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link inactive" href="{{ url('/naujas') }}">
<i class="material-icons">vertical_split</i>
<span>Naujas darbuotojas</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link inactive" href="{{ url('/imones') }}">
<i class="material-icons">note_add</i>
<span>Įmonės</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link inactive" href="{{ url('/padaliniai') }}">
<i class="material-icons">note_add</i>
<span>Padaliniai</span>
</a>
</li>
</ul>
</div>
推荐阅读
- reactjs - Redux 不断更新
- css - 引导程序通过链接工作,但下载时不工作
- amazon-web-services - 即使在 CodeBuild Pipeline 成功执行后,Lambda 函数也不会更新
- xamarin.forms - 无法复制 ipa 文件的热重启错误
- bash - 用于检索服务器统计信息的 Bash 脚本
- d3.js - 设置 yAxis 刻度 D3js
- github - 尝试通过“openshift-3.11”提供程序中的“jx boot”安装“jenkins-x”时,“lighthouse-jx-controller”pod 失败
- c - 如何将 gethostbyname 更改为 getaddrinfo?
- amazon-web-services - 将 X-Ray 与现有 ECS 集群集成
- java - 在java对象构造函数中模拟依赖