如果,否则if语句无法正常工作

时间:2015-01-14 15:07:52

标签: javascript jquery

当两个div都被激活时,一切正常,直到我到达第二个else if。出于某种原因,只有#project-wrapper才能删除该类。我写了第二个else if错了吗?

$('.site-title a').click(function(e) {
    e.preventDefault();

    if($('#project-wrapper').hasClass('activated')){
        $('#project-wrapper').removeClass('activated').css('max-height', '');
    }
    else if($('#contact-me').hasClass('activated')){
        $('#contact-me').removeClass('activated');
    }
    else if( ($('#project-wrapper').hasClass('activated')) && ($('#contact-me').hasClass('activated')) ){
        $('#contact-me').removeClass('activated');
        $('#project-wrapper').removeClass('activated');
    }
    else {
    }

});

5 个答案:

答案 0 :(得分:2)

首先检查“both”条件,否则永远不会检查该条件:

if( $('#project-wrapper').hasClass('activated') && $('#contact-me').hasClass('activated') ) {
  $('#contact-me, #project-wrapper').removeClass('activated');
}
else if($('#project-wrapper').hasClass('activated')){
  $('#project-wrapper').removeClass('activated').css('max-height', '');
}
else if($('#contact-me').hasClass('activated')){
  $('#contact-me').removeClass('activated');
}
else {
}

答案 1 :(得分:1)

你需要切换if语句,因为第二个if永远不会被击中

$('.site-title a').click(function(e) {
    e.preventDefault();

    if( ($('#project-wrapper').hasClass('activated')) && ($('#contact-me').hasClass('activated')) ){
        $('#project-wrapper').removeClass('activated').css('max-height', '');
    }
    else if($('#contact-me').hasClass('activated')){
        $('#contact-me').removeClass('activated');
    }
    else if($('#project-wrapper').hasClass('activated')){
        $('#contact-me').removeClass('activated');
        $('#project-wrapper').removeClass('activated');
    }
    else {
    }

});

答案 2 :(得分:0)

只需删除'否则'零件并保持所有条件分开'如果'这应该工作

答案 3 :(得分:0)

$('.site-title a').click(function(e) {
    e.preventDefault();
    if( ($('#project-wrapper').hasClass('activated')) && ($('#contact-me').hasClass('activated')) ){
        $('#contact-me').removeClass('activated');
        $('#project-wrapper').removeClass('activated');
    }
    if($('#project-wrapper').hasClass('activated')){
        $('#project-wrapper').removeClass('activated').css('max-height', '');
    }
    if($('#contact-me').hasClass('activated')){
        $('#contact-me').removeClass('activated');
    }
});

答案 4 :(得分:0)

在您的代码中,第二个'else-if'语句将从不,因为它要求 BOTH 元素将“激活”类,如果是情况,然后 FIRST '如果'将启动,没有其他任何事情发生....(所有'其他if'语句......)