javascript - 如何在 JQuery 中制作通用切换功能?

标签 javascript jquery html asp.net-core razor

我有一个 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 上实际切换的逻辑的困境。

如何使用通用功能切换侧面菜单?

我查看的来源:

https://api.jquery.com/toggle/

How to toggle (hide / show) sidebar div using jQuery

最佳答案

.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 - 如何在 JQuery 中制作通用切换功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57091146/

相关文章:

html - 在第一张图片下重复第二张背景图片

html - 为什么图片和div之间有空格?

javascript - 无法使用 jquery 更改 css 类

javascript - 打开新的弹出窗口并返回值

javascript - 浏览图像未正确裁剪

javascript - 如何使大文本字段的文本框变宽

javascript - 如果选项文本包含 Select,则选择框验证

javascript - 防止转义文本节点上的特殊字符(JS-HTML)

javascript - 使用 localhost/同一主机的 http 模块获取请求

javascript - 尝试在 react 中添加多张图片,但它只显示一张图片