2012-05-30 44 views
1

我使用了很多getElementById,並且我有一個關於什麼是重構它的最佳方法的問題。JavaScript - 重構getElementById

正如許多人已經做到了,我用這個代碼,使其更簡單,更方便,減少文件大小:

function $(id){ 
return document.getElementById(id); 
} 

但在什麼我需要幫助:這是最好添加一個變量document.getElementById只是改變他們在我需要它的每個功能?或者,我應該堅持我已經擁有的東西(使用$(id)

+0

什麼「添加一個變量與document.getElementById」是什麼意思? – Quentin

+0

我與@Quentin。我不明白你的問題的一半。另外,我會調用你的函數'$ id'而不是$',所以你沒有命名與任何流行的庫衝突。 –

+3

而且「哦,不是另一個糟糕的'$'函數」,它們有太多了,[它不清楚它們中的任何一個是做什麼的](http://en.wikipedia.org/wiki/Self-文檔化)。如果輸入'document.getElementById'是非常費力的事情,那麼爲你的編輯器編寫一個宏,而不是你的代碼的其他維護者必須解釋的神祕符號。 – Quentin

回答

1

是的,window.$ = document.getElementById.bind(document);也可以。一般參見this answerJavascript Shorthand for getElementById

如果你害怕污染全局命名空間或與廣泛使用$選擇快捷方式(尤其是他們的插件)某些庫相沖突的,你需要使它局部變量在函數的範圍:

(function(/*id selector*/ $) { 
    // your code here, using $ 
})(document.getElementById.bind(document)); 

實際上與

(function() { 
    function $(id){return document.getElementById(id);} 
    // your code here, using $ 
})(); 
+0

謝謝!我不使用jQuery,因爲使用普通的JavaScript感覺更好,只是學習,而不是效率低下的方式。 –

+0

我沒有說任何jQuery :-)另外,普通的JavaScript比重用庫的使用更有效* – Bergi

+0

現在我知道了!將排名你的答案,但我還沒有足夠的積分呢:( –