JavaScript没有看到函数外部的变量

时间:2013-02-08 21:19:57

标签: javascript jquery

我有这个功能:

$(function ($) {
...
});

var getNotifyBar = $(".NotifyBar");
function showNotify(text) {
    getNotifyBar.hide().find(".text").html(text).end().slideDown();
}

当我使用函数showNotify(text)时,没有任何反应。但是,当我把它放在JavaScript控制台(浏览器)时,它可以工作。

2 个答案:

答案 0 :(得分:5)

在渲染类NotifyBar的所有元素之前,这种情况很可能正在运行

var getNotifyBar = $(".NotifyBar");

这意味着当您稍后尝试使用它时它是空的。你应该这样做:

var getNotifyBar;
$(function ($) {
 getNotifyBar = $(".NotifyBar");
});

现在它应该正确加载。接下来,您需要记住getNotifyBar是对已经从选择器加载的jQuery对象的引用。因此,您无需将其包装在$()中。你应该做这个改变:

function showNotify(text) {
 getNotifyBar.hide().find(".text").html(text).end().slideDown();
}

答案 1 :(得分:0)

您的代码现在无法正常工作并且可以在控制台上运行,因为当您在控制台中运行它时,它位于DOMReady之后。在示例中将代码放在3个点的位置,它将起作用,因为:

$(function($){

//code here

})

将在DOMReady

之后运行代码