【问题标题】:Jquery else if statementjQuery else if 语句
【发布时间】:2012-08-23 13:59:27
【问题描述】:

我想出了一些来自外部页面的 jquery,并在另一个页面上显示隐藏的 div (#section2)。问题是我似乎无法让#section3 与#section2 一样工作。这是代码。

jQuery(document).ready(function() {
    var hash = window.location.hash.substring(0);
    jQuery(hash).css({
        "display": "block"
    });
    if (hash != '#section2') {
        jQuery('#section1').css({
            "display": "block"
        });
    }
    else {
        jQuery('#section1').css({
            "display": "none"
        });
    }
});​

我试过 else if if(hash != '#section3'){ jQuery('#section1').css({"display":"block"}); } 当输入带有哈希的各自网址时,我似乎只能让 #section2 或 #section3 显示为隐藏 section1 。我似乎无法让它们同时正常运行。基本上我需要一些会产生的东西 if(hash != '#section2' or '#section3')。我正在学习,所以任何帮助将不胜感激。

【问题讨论】:

  • hash 似乎没有定义。
  • 抱歉输入错误..太晚了。我编辑了它。
  • 为什么是var hash = window.location.hash.substring(0); 而不是var hash = window.location.hash;

标签: javascript jquery if-statement


【解决方案1】:
jQuery(document).ready(function() {
    var hash = window.location.hash.substring(0);
    jQuery(hash).css({
        "display": "block"
    });
    if (hash != '#section2' && hash != '#section3') {
        jQuery('#section1').css({
            "display": "block"
        });
    }
    else {
        jQuery('#section1').css({
            "display": "none"
        });
    }
});​

另外,请考虑使用 jQuery .show().hide() 代替那些 css 更改(效果相同,但不那么冗长,并且它会记住以前的状态)。

【讨论】:

  • 感谢完美。我试过||你介意向我解释为什么 && 有效而不是 ||。我会很感激的。再次感谢。
  • @john 这个想法是你希望你只在哈希不等于#section2并且不等于#section3时才显示#section1。用英语写它可能看起来像一个或条件,但你绝对不希望它等于任何一个。如果其中一个条件为真,则 OR 条件将通过,但在这种情况下,您只希望它在 BOTH 为真时通过(即,如果两者都不等于哈希)。如果不够清楚,我可以更详细地解释这一点,请告诉我。
  • 你的解释对我来说很清楚。我很感激。 .hide().show() 也有效。我遇到的唯一问题是,当第 2 节和第 3 节打开时,它们会在页面中心打开,并且标题不在视野范围内。我认为这是由于锚。我会用.offset() 来解决这个问题吗?
  • @john 你可以使用它,但一个 css 修复会更好。尝试使用.show() 而不是.css(...)。如果这无助于提出一个新问题并包含您当前的 html 和 css,我可以看看。
  • 非常感谢您的帮助。我能够在另一个问题的帮助下解决跳跃问题。 link
【解决方案2】:

试试;

$(document).ready(function(){
  var sectionhash = window.location.hash.substring(0);
  $(hash).css({"display":"block"});
  if(hash != '#section2' || hash != '#section3'){
    $('#section1').css({"display":"block"});
  }else {
    $('#section1').css({"display":"none"});
  }
});

$(document).ready(function(){
  var sectionhash = window.location.hash.substring(0);
  $(hash).css({"display":"block"});
  if(hash != '#section2'){
    $('#section1').css({"display":"block"});
  }else if(hash != '#section3'){
    $('#section1').css({"display":"block"});
  }else {
    $('#section1').css({"display":"none"});
  }
});

【讨论】:

    【解决方案3】:
    (function($) {
        var hash = window.location.hash;
        $(hash).css('display', 'block');
        $("#section1").toggle(!(hash=='#section2'||hash=='#section3'));
    })(jQuery);​
    

    【讨论】: