【发布时间】:2020-05-31 10:49:15
【问题描述】:
我不久前购买了这个主题,并一直在对其进行拆分和修改以添加/删除功能。一旦从导航栏菜单中单击链接,页面上就会出现这个幻灯片菜单。问题是有一个 X 按钮来关闭菜单,当它被点击时应该从 #btn-offcanvas-menu 元素中切换/删除一个类(#btn-close-canvasmenu 是可点击元素);它适用于桌面,但不适用于响应式移动网站。在移动设备上切换/删除它的唯一方法是再次单击原始链接。我在这里查看了以下问题以及其他几个问题,包括尝试使用最接近/查找的选项,但似乎没有任何效果。我错过了什么?
期望的行为:当#btn-close-canvasmenu 链接被点击时,isLeft 类应该被切换/移除。它在桌面上,但不在移动设备上。
- Javascript not working on mobile but works on desktop。
- JavaScript - removeClass not working?
- ToggleClass and RemoveClass not working
- JQuery - ToggleClass/AddClass/RemoveClass
- How to toggle class of closest elementjquery toggle class on closest span
这是索引页的相关部分...
<li id="recent-mobile"><!-- this is hidden by CSS on desktop -->
<a id="btn-offcanvas-menu" href="#">Recent Results</a>
</li>
<li id="recent-results"><!-- this is hidden by CSS on mobile -->
<div class="header-buttons pull-right hidden-xs hidden-sm">
<div class="navright-button">
<a href="#" id="btn-offcanvas-menu"><i class="fa fa-bars"> Recent Results</i></a>
</div>
</div>
</li>
<!-- Menu OffCanvas right begin -->
<div class="navright-button">
<div class="compact-menu-canvas" id="offcanvas-menu">
<h3>menu</h3><a id="btn-close-canvasmenu"><i class="fa fa-close"></i></a>
<nav>
<ul class="clearfix">
<li><a href="index.html">Home</a></li>
<li><a href="features.html">Features</a></li>
<li><a href="pages.html">Pages</a></li>
<li><a href="portfolio.html">Portfolios</a></li>
<li><a href="shop.html">Shop</a></li>
<li><a href="blog.html">Blog</a></li>
<li><a href="contact.html">Contact Us</a></li>
</ul>
</nav>
</div>
</div>
<!-- Menu OffCanvas right close -->
这是 javascript compact.js 文件的相关部分...
$("#btn-close-canvasmenu").on("click", function() {
$("#offcanvas-menu").stop().animate({
right: "-260px"
}, 300), $("a#btn-offcanvas-menu").removeClass("isLeft")
});
$(document).on("click", "#btn-offcanvas-menu, #btn-offcanvas-menu-mobile", {} , function(a){
var id = $(this).attr('id');
if (id === "btn-offcanvas-menu-mobile") {
$("#btn-close-canvasmenu").toggleClass("mobile");
}
return a.preventDefault(), $(this).hasClass("isLeft") ? $("#offcanvas-menu").stop().animate({
right: "-260px"
}, 300) : $("#offcanvas-menu").stop().animate({
right: "0px"
}, 300), $(this).toggleClass("isLeft"), false
});
编辑(2020 年 2 月 16 日修复):我编辑了 js 文件文件以反映这个更新的功能:$("#btn-close-canvasmenu").on("click", function()
基本上,修复它的原因是将选择器从 #btn-offcanvas-menu 更改为 #btn-offcanvas-menu。不知道为什么这与使用最接近/查找方法相反,但是一旦我这样做了,它就会正确切换/删除桌面和移动设备上的类。如果有人对为什么 a 对选择器产生影响有任何想法,我将不胜感激,因为我不是 js/jQuery 专家。否则,这可以被认为是关闭的。
【问题讨论】:
-
@Bhargav Rao:我进行了要求的编辑;请重新打开您关闭的问题。
-
您的 HTML 似乎无效。我看不到关闭
</ul>,虽然我看到li,然后是div。ul不能有除li以外的其他孩子。 -
@connexo:上面存在的唯一
- 在导航关闭之前关闭。每个元素都是封闭的。
-
不在您显示的代码中。
-
@connexo 我附加的代码中只有一个
- 标签,它被代码中唯一的
标签: javascript jquery