0

我正在尝试定义一个全局 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,不是)。

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

谢谢!!

4

3 回答 3

2

这不是范围问题 - 您的代码中有错字:

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

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

只要object_listandlist_length在父函数中声明,这应该可以工作。

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

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

如前所述,鉴于您在 OP 中的代码,这应该不是必需的。

于 2013-08-17T15:06:12.000 回答
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);
});
于 2013-08-17T15:06:15.890 回答
0

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

$(document).on('keydown', '#object_list', function(event) {
    alert(this);
    alert($(this).find('li').length);
});
于 2013-08-17T15:09:45.860 回答