单击浮动按钮或点击时,尝试使用移动页脚菜单(#mobile菜单)隐藏/显示。我可以将click事件处理程序添加到按钮(#mobile-footer-btn)中,该按钮又将一个类应用于菜单并将其设置为屏幕外的动画。
<footer id="mobile-footer">
<div id="mobile-menu">
<div id="mobile-footer-container">
<div class="mobile-link">
<a href="#" class="text-center">My Account</a>
</div>
<div class="mobile-link">
<a href="#" class="text-center">Reviews</a>
</div>
<div class="mobile-link">
<a href="#" class="text-center">Contact Us</a>
</div>
</div>
</div>
<div id="mobile-footer-close">
<button id="mobile-footer-btn">
<div class="mobile-btn-close">
<span></span>
</div>
</button>
</div>
</footer>
无论出于何种原因,我无法移除该类并将新类添加到相同的ID,这将添加一个类以再次显示该菜单。
jQuery(document).ready(function($){
// Store menu container
var mobileMenu = '#mobile-menu';
// Store Trigger
var mobileBtn = '#mobile-footer-btn';
//Trigger closing the footer menu
$(mobileBtn).on("click", function() {
$(mobileMenu).addClass('mobile-menu-hide');
});
$('.mobile-btn-close').click(function() {
$(this).addClass('is-rotating');
});
if($(mobileMenu).hasClass('mobile-menu-hide')) {
$(mobileBtn).on("click", function(e) {
e.stopPropagation();
$(mobileMenu).removeClass("mobile-menu-hide").addClass("mobile-menu-show");
});
}
});
非常感谢任何帮助!
答案 0 :(得分:2)
点击活动只需要一个!您的if条件永远不会被评估为true,因此永远不会触发您的onclick
事件。把它放在一个onclick事件中会更好。这是代码:
jQuery(document).ready(function($){
// Store menu container
var mobileMenu = '#mobile-menu';
// Store Trigger
var mobileBtn = '#mobile-footer-btn';
$('.mobile-btn-close').click(function() {
$(this).addClass('is-rotating');
});
$(mobileBtn).on("click", function(e) {
e.stopPropagation();
if($(mobileMenu).hasClass('mobile-menu-hide')) {
$(mobileMenu).removeClass("mobile-menu-hide").addClass("mobile-menu-show");
} else {
$(mobileMenu).removeClass("mobile-menu-show").addClass("mobile-menu-hide");
}
});
});
以上是这个问题:https://plnkr.co/edit/SG8eFns91wV4adxapFDB
现在考虑更好:只需切换隐藏菜单的一个类,只使用jQuery的toggleClass
函数。像这样:
$(mobileBtn).on("click", function(e) {
e.stopPropagation();
$(mobileMenu).toggleClass('mobile-menu-hide');
});
答案 1 :(得分:0)
问题是块中的if
条件只执行一次。但是,您需要在每次点击时调用它。因此,您需要将代码更新为以下
jQuery(document).ready(function($){
// Store menu container
var mobileMenu = '#mobile-menu';
// Store Trigger
var mobileBtn = '#mobile-footer-btn';
//Trigger closing the footer menu
$(mobileBtn).on("click", function() {
// moved your if block inside the click handler
if($(mobileMenu).hasClass('mobile-menu-hide')) {
e.stopPropagation();
$(mobileMenu).removeClass("mobile-menu-hide").addClass("mobile-menu-show");
} else {
$(mobileMenu).addClass('mobile-menu-hide');
}
});
$('.mobile-btn-close').click(function() {
$(this).addClass('is-rotating');
});
});
答案 2 :(得分:0)
您的$(mobileBtn).on("click", function(e) { ...
代码永远不会执行,因此永远不会添加点击事件处理程序,因为菜单不会以.mobile-menu-hide
开头尝试此
$(mobileBtn).on("click", function(e) {
if($(mobileMenu).hasClass('mobile-menu-hide')) {
e.stopPropagation();
$(mobileMenu).removeClass("mobile-menu-hide").addClass("mobile-menu-show");
}
});