2012-03-01 58 views
0

我有一個假設的問題,知識有點模糊。jQuery對象引用如何工作?

如果我有一個jQuery對象:Common.$footer = $('.footer');

而且我宣佈它時,頁腳不存在,但隨後頁腳被後來添加的,將參考工作呢?

或者類似的情況,如果我在頁腳顯示時做了同樣的事情,那麼它會被刪除,然後我就會使用它。

我在我的代碼早在想,如果其確定設置一些參考,我可以,如果物體存在,只是在以後使用和測試:

Common.$footer[0] && MyFuncCall(); 

另外,如果我在以後添加元素可以用$('。my-dynmically-added-el')來抓取它嗎?還是我需要使用.live或其他?

回答

2

沒有參考文獻。反正...

$(selector)返回組固定的元素目前選擇相匹配。

如果這個結果是空的,那麼,它將永遠是空的:結果jQuery對象可以 - 也應該 - 被認爲是不可變的,即使它們表示的元素可以被突變。

因此:

x = $('.footer') 
// if x.length == 0 then... 
// a long time later, assuming x is not assigned to again... 
// x.length == 0 is still true 

live(),但是是不同的。

快樂編碼。

+0

感謝您的回答 – Baconbeastnz 2012-03-01 02:47:26

+0

所以我理論上可以添加一個$(document).live(function({});在裏面,檢查是否設置了.footer,然後更新Common $ footer – Baconbeastnz 2012-03-01 02:49:10

+1

@Baconbeastnz'live當事件在文檔(事件處理程序)中處理得很遠時,目標元素將與選擇器匹配,如果成功,則調用相應的處理程序。真的沒有問題,「只是抓住[元素]它動態後來「:選擇器是相當快的,如果你在同一個函數中多次使用相同的元素,那麼*,然後*,將它緩存到局部變量。 – 2012-03-01 02:52:37

1

指定像這樣指定的jQuery選擇器在創建對象時運行一次。如果在創建jQuery對象時該對象不存在,那麼jQuery對象將爲空。當物體開始存在時,它們不會神奇地填滿自己。這就是他們的工作方式。

有一些方法(使用事件冒泡),以處理由使用.delegate().on()未來的對象發生的事件,但比迄今爲止你所描述的不同。

如果你想要一個直接引用將要創建的對象的jQuery對象,那麼引用該對象的jQuery對象的唯一方法就是在該對象存在後創建該jQuery對象。