2013-04-29 82 views
0

有沒有關於如何存儲實際的JQuery選擇器的最佳做法? 不是他們返回,而是選擇器字符串本身。 我們的項目中有很多選擇器,我想爲他們設置一個地方或一個對象,這樣我可以在需要時快速編輯它們。存儲JQuery選擇器

事情是這樣的:

LazySelectors = { 
    candidate_photo : function() { 
     return "#super-duper-selector"; 
    } 
}; 

,然後參考它在很多地方或類似不同的腳本:

$(LazySelectors.candidate_photo()).magic(); 

我測試過這對JSpref,這是一個快一點。 任何最佳實踐或建議?

+3

'$(LazySelector.Candidate_photo)'應該是'$(LazySelectors.candidate_photo())'。你應該再次運行測試。 – 2013-04-29 08:32:43

+3

你爲什麼不把字符串分配給它?無需功能... – elclanrs 2013-04-29 08:34:35

+0

@FelixKling謝謝,沒有注意到,而打字。當然,我運行測試的版本:) – justartem 2013-04-29 08:40:11

回答

3

我通常不喜歡這樣:

jQuery(function(){ 
    LazySelectors = { 
     lazyFormSelector:"#lazyForm", 
     createButtonSelector:"#lazyCreateButton", 
     idSomeLevel:-1, 
    } 
    jQuery.extend(SomeOtherObject.LazyObject,LazySelectors); 
}) 

,並保持這整個LazySelectors在不同的.js文件中的對象。

你可以用它喜歡:$(SomeOtherObject.LazyObject.lazyFormSelector)

的另一件事:據我所知(我可能是錯在這裏),從性能上來看,它是更好的緩存「包裝」 DOM元素,否則你會每次遍歷DOM你做$(SomeOtherObject.LazyObject.lazyFormSelector)

0

我想這樣做(更好的性能)的最好方法,只需直接用字符串,不需要的功能。

#references.js 
var refCandidate_photo = $("#super-duper-selector");