我的JS文件中有以下代码:
jQuery("document").ready(function (e) {
var menu = e(".menu-container");
var button = e(".menu-functions");
e(window).scroll(function () {
if (e(this)
.scrollTop() > 150) {
menu.addClass("f-nav");
button.addClass("collapse-expand");
button.addClass('collapse');
} else {
menu.removeClass("f-nav");
button.removeClass("collapse");
button.removeClass("expand");
button.removeClass("collapse-expand");
}
});
//problem area
$('#menu-functions').click(function(){
if(button.hasClass('collapse'))
{
button.addClass('expand');
button.removeClass('collapse');
}
if(button.hasClass('expand'))
{
button.addClass('collapse');
button.removeClass('expand');
}
});
});
现在我需要做到这一点,以便// problem area
下的部分开始工作。我认为jQuery中有toggleClass
,对吧?一些先进的条件可以做到这一点,但我还在学习,我需要一些帮助。我还需要找到animate()
.menu-container
div的方法,无论按钮状态是展开还是折叠:
expand
课程时被点击了
collapse
课程时被点击了
编辑 - JSFIDDLE: jsfiddle.net/rcdhnh7L
答案 0 :(得分:1)
请尝试这样做。不要使用e
作为jQuery的var,这很奇怪。我简化了问题区域,直接抓取你想要的元素,而不是迭代现有的集合。
jQuery("document").ready(function ($) {
var menu = $(".menu-container");
var button = $(".menu-functions");
$(window).scroll(function () {
if ($(this)
.scrollTop() > 150) {
menu.addClass("f-nav");
button.addClass("collapse-expand");
button.addClass('collapse');
} else {
menu.removeClass("f-nav");
button.removeClass("collapse");
button.removeClass("expand");
button.removeClass("collapse-expand");
}
});
//problem area
$('#menu-functions').click(function () {
$('.menu-functions.collapse').addClass('expand').removeClass('collapse');
$('.menu-functions.expand').addClass('collapse').removeClass('expand');
});
});
或者这也应该有效:
//problem area
$('#menu-functions').click(function () {
$('.menu-functions.collapse, .menu-functions.expand').toggleClass('expand collapse');
});