Javascript& Jquery定义一个全局变量?

时间:2013-08-17 15:03:18

标签: javascript jquery

我正在尝试定义一个全局jquery对象变量,以便我可以从不同的函数访问它。

这就是我在做的事情:

var object_list = $("#object_list");
var list_length = object_list.find("li").length;

$(document).on('keydown', '#object_list', function(event) {
    //both of these don't work
    alert(object_list);
    alert(list_length);
});

嗯,由于某种原因,这不起作用(第一个警报给我NULL,第二个警告给我0,这不是)。

为什么我的全局变量不起作用.. ??

谢谢!

3 个答案:

答案 0 :(得分:2)

这不是范围问题 - 您的代码中存在拼写错误:

var object_list = $("#object__list"); // 2 underscores

$(document).on('keydown', '#object_list', function(event) { // 1 underscore

只要在父函数中声明object_listlist_length,这应该有效。

或者,您可以将变量附加到window对象,因此可以在代码中的任何位置使用它们:

window.object_list = $("#object__list");
window.list_length = object_list.find("li").length;

如上所述,鉴于OP中的代码,这不应该是必要的。

答案 1 :(得分:0)

这个怎么样:

var object_list;
var list_length;

$(document).ready(function() {
    object_list = $("#object__list");
    list_length = object_list.find("li").length;
});

$(document).on('keydown', '#object_list', function(event) {
    alert(object_list);
    alert(list_length);
});

答案 2 :(得分:0)

您将事件处理委托给document,我认为这是因为绑定事件时页面中不存在#object_list。如果您定义object_listlist_length时也不存在,那就是它们为空的原因。一旦清空,添加元素时不会自动填充它们。 试试这个:

$(document).on('keydown', '#object_list', function(event) {
    alert(this);
    alert($(this).find('li').length);
});