我正在尝试定义一个全局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,这不是)。
为什么我的全局变量不起作用.. ??
谢谢!
答案 0 :(得分:2)
这不是范围问题 - 您的代码中存在拼写错误:
var object_list = $("#object__list"); // 2 underscores
$(document).on('keydown', '#object_list', function(event) { // 1 underscore
只要在父函数中声明object_list
和list_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_list
和list_length
时也不存在,那就是它们为空的原因。一旦清空,添加元素时不会自动填充它们。
试试这个:
$(document).on('keydown', '#object_list', function(event) {
alert(this);
alert($(this).find('li').length);
});