給定以下代碼爲什麼我得到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