【问题标题】:Global variables, Jquery全局变量,jQuery
【发布时间】:2015-06-21 13:38:09
【问题描述】:

我有以下代码

oss = $("#us");
mainLogo = $("#mainLogo");
container = $(".container");

$(document).ready(function(){
    oss.hide();
    oss.fadeIn(1000);
    mainLogo.hide();
    mainLogo.fadeIn(1000);
    container.find("#images").hide();
    container.find("#images").slideDown();
})
$(oss).click(function(){
    container.fadeOut();
})

我的问题是我似乎无法访问外部变量。我试过window.varName,只是写var infront等。但编译器似乎只是跳过它,因此什么都不做。

【问题讨论】:

  • 这些脚本是否在页面正文部分之前加载?如果是这样,$("anyselector") 在页面加载之前将始终是一个空的 jQuery 对象。
  • 啊!这是有道理的。我对网页编码没有太多经验,不过这很有趣。

标签: javascript jquery variables scope


【解决方案1】:

以下代码与您尝试完成的相同。这样你就可以在 document.ready() 的范围之外声明全局变量:oss、mainLogo 和容器。

var oss;
var mainLogo;
var container;

$(document).ready(function(){

    oss = $("#us");
    mainLogo = $("#mainLogo");
    container = $(".container");

    oss.hide();
    oss.fadeIn(1000);
    mainLogo.hide();
    mainLogo.fadeIn(1000);
    container.find("#images").hide();
    container.find("#images").slideDown();


    oss.click(function(){
        container.fadeOut();
    });
});

【讨论】:

  • 所以逻辑是你创建全局变量然后插入值、字符串等等。当网页加载时,我理解的 $(document).ready() 也正确激活,调用?从而导致 oss.click 可调用?
  • 在这种情况下是的,因为元素在加载 DOM 时可用。这就是为什么需要 $(document).ready() 来初始化元素上的更多事件。
猜你喜欢
  • 2013-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-25
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
相关资源
最近更新 更多