【问题标题】:Jquery: Why will this if-else statement only follow the if, or the else, but wont follow both when they're different conditions that can be metJquery:为什么这个if-else语句只跟随if或else,但当它们是可以满足的不同条件时不会跟随两者
【发布时间】:2010-08-10 20:50:25
【问题描述】:

问题:如果通过滚动“.fakeheading”下方或上方可以在不同时间满足这两个条件,为什么 If 和 Else 都不起作用? Else 语句是否优于 If 语句?

JQUERY:
$(window).scrollTop(function() {

    $('.grid_12').find(function () {
        var $header = $(this);

         if ($header.offset().top < $(window).Top()) {
             $(".fakeheading").css({position:"fixed"})
         } else {
            $(".fakeheading").css({position:"absolute"}) 
        } 
    });
});

其他信息/想法:
如果我有$(".fakeheading").css({position:"absolute"})
,为什么'if' 语句不起作用 在“其他”语句中。 If 或 Else 都在工作,但它们不会像应有的那样一起工作。当我拥有包含在 else 语句中的代码时,就像我的代码不会遵守 if 语句一样。但是如果我弄乱了 else 语句代码,(它是

posssssition:"absolute"

然后我的脚本的 if 语句部分可以正常工作。

【问题讨论】:

  • 你把分号留在了 "$(".fakeheading").css({position:"fixed"})" 和 "$(".fakeheading").css({position:"绝对"})" 故意离开?
  • 这真是个问题
  • “If 或 Else 都在工作,但它们不会像应有的那样一起工作” If 和 Else 子句永远不应该同时工作,这将完全违背它们的目的。听起来您的预期是错误的,否则您需要澄清您的问题。

标签: javascript jquery scroll positioning if-statement


【解决方案1】:

当你有和 IF 语句和 ELSE 时,只处理第一个“真”条件。因此,如果该过程看起来像以下伪代码:

 if (true) {do true stuff}
 else { do false stuff}

只有第一个会实际处理,第二个不会。

另一方面,如果你有:

 if (true) {do true stuff}
 if (other true stuff) {do other true stuff}

结构,如果条件为真,它们都可以处理

编辑:如果您有其他说明:

if (true) {do true stuff} 
 else if (second true stuff) { do second true stuff} 
 else if (third true stuff) { do third true stuff}

只有第一个“真”的过程会执行,无论是自上而下的哪个,都等于真。

【讨论】:

  • 请记住,一旦找到 true,javascript 实际上会跳过对辅助代码的评估,因此如果逻辑允许,您的“最常见的”应该是第一个,因为这将优化评估避免处理不太常见的条件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多