jquery ready函数的范围

时间:2014-09-14 17:43:37

标签: jquery

var $target = $("#a");
$(document).ready(function() {

    $target.fadeOut('fast');
});

a是一个列表项。出于某种原因,当变量在$(document).ready()之外定义时,它不会淡出。我认为如果我在全局范围内定义$ target,我可以在函数内部访问它。

你能告诉我在document.ready函数外部和内部定义它之间的区别吗?

2 个答案:

答案 0 :(得分:1)

当您设置$ target变量时,文档尚未加载,您需要将其设置为“就绪”功能。

尝试这3个可能性:

//with global variable.
var $target = false;
$(document).ready(function() {
    $target = $("#a");

    $target.fadeOut('fast');
});

//with local variable.
$(document).ready(function() {
    var $target = $("#a");

    $target.fadeOut('fast');
});

//without variable
$(document).ready(function() {
    $("#a").fadeOut('fast');
});

答案 1 :(得分:0)

您的案例中的问题是,在$(document).ready(function(){})之外 DOM 未完全加载,当您分配var $target = $("#a");$(document).ready(function(){})之外)时,可能是在 DOM 中没有$("#a")id 'a'元素)。当你的html(DOM)是$(document).ready(function(){})事件时会触发完全装满了。

正确的jquery代码应如下所示:

$(document).ready(function() {
  var $target = $("#a");
  $target.fadeOut('fast');
});