给定以下代码为什么我得到a
和b
不同的值?我原以为他们会返回相同的东西:缓存的JQuery选择器行为,我不明白
(function() {
var a = $('#foo');
var Test = function(){
console.log(a); //outputs 'jQuery()'
var b = $('#foo');
console.log(b); //outputs 'jQuery(select#foo)' which is what I want
};
})();
这个问题源于我试图将频繁使用的选择器插入瓦尔。最初我是用每种方法做的(就像我在上面的例子中用var b
做的那样),但是后来我发现我需要在多种方法中使用选择器,所以我把任务移到了可用的地方(或者我认为)在那个匿名函数中的方法。正如你所看到的,它不起作用。为什么是这样?
编辑:此代码是通过点击触发的方法加载的。 id foo在页面加载时不会动态设置或更改。
当'Test'叫什么名字? – 2010-03-30 17:09:21
在我的实际代码中,它是一个函数,当提交表单时,它将作为数据验证方法的一部分被调用。无论如何页面加载后。 – Stuart 2010-03-30 17:29:42
但现在我想到了,匿名函数本身可能不会在恰当的时间加载。它由一个插件加载,但必须在页面完成之前加载(因此'#foo'不可用)。然后,'Test()'在页面加载后通过点击被调用,所以自然会起作用。这有助于,谢谢! – Stuart 2010-03-30 19:07:34