javascript - 如何在 JQuery 中制作通用切换功能?
问题描述
我有一个像这样的 HTML 侧边菜单:
_Layout.cshtml
<div class="col nav-left h-100">
<p>Menu</p>
</div>
在我的Site.js 中,我为切换创建了一个通用的 JQuery 函数:
var eventHandler = {
addToggle: function addToggle(btnElem, openEvent, closeEvent) {
const isClosedClass = 'this-is-closed';
btnElem.click(function () {
if ($(this).hasClass(isClosedClass)) {
openEvent();
} else {
closeEvent();
}
});
}
};
在我的_Layout.cshtml我这样调用这个函数:
<script>
eventHandler.addToggle($(".btn-toggle-something"),
function () {
// Slide down
},
function () {
// Slide up
});
</script>
现在我被卡住了如何为 div 上的实际切换编写逻辑。
如何使用通用功能切换我的侧边菜单?
我看过的资料来源:
解决方案
.slideUp()和.slideDown() 与 .toggleClass()结合使用- 请参见下文:
var eventHandler = {
addToggle: function addToggle(btnElem, openEvent, closeEvent) {
const isClosedClass = 'this-is-closed';
btnElem.click(function () {
if ($(this).hasClass(isClosedClass)) {
openEvent();
} else {
closeEvent();
}
// Toggle `isClosedClass` for next time this is clicked.
btnElem.toggleClass(isClosedClass);
});
}
};
// Bind slideDown/slideUp.
var leftNav = $('.nav-left');
eventHandler.addToggle($('.btn-toggle-something'),
function () {
leftNav.slideDown();
},
function () {
leftNav.slideUp();
}
);
body {
margin: 0;
padding: 0;
}
p {
margin: 0;
}
.nav-left {
background-color: lightskyblue;
width: 200px;
height: 400px;
}
.btn-toggle-something {
cursor: pointer;
position: fixed;
top: 0;
left: 250px;
height: 50px;
width: 50px;
background-color: salmon;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="col nav-left h-100">
<p>Menu</p>
</div>
<div class="btn-toggle-something">Toggle</div>
推荐阅读
- javascript - 如何对由标记添加的自定义图标进行聚类
- php - 为什么来自 MySQL 的十进制值被转换为/显示为整数?
- c# - `Where`中使用新对象的Linq查询性能
- python - 在引导前端显示 Flask 下拉菜单
- javascript - 将自定义标头与 XMLHttpRequest Open 一起使用时,Jquery.get 函数被无限次调用
- vue.js - 无法从 localhost 与启用 HTTPS 的服务通信
- java - 使用所需参数构建 Spring 批处理项目
- apache-kafka - .net 的 KSQLDB 客户端
- flutter - Flutter - 防止用户将应用程序置于后台并防止在 Flutter Web 上打开其他选项卡
- r - 将字符串合二为一