2013-03-19 46 views
2

我使用Mootools,並且我有很多實用功能和發生在很多頁面上的東西。我將這些函數移動到一個主JS文件中,所以我不需要記住爲每個頁面添加單獨的方面,我想象的是正常的發展模式。Mootools,搜索dom,看看是否存在類,我應該擔心每頁都會多次執行它

現在,這些實用功能中的一些僅與相關,並且實際上只有在某些頁面上存在某些元素時才起作用。例如,我有一個功能,檢查關閉的圖標,並添加相關的事件給他們;

$each($$('.closethis'), function(el){ do stuff like add events } 

這樣的事情在頁面開始爲關閉事件發生好幾次,懸停收購,togglers,警報通過DOM某些類別的東西各種各樣,每次迭代它。

我應該爲此擔心嗎..?這是'馬虎'..?有沒有更好的方式/模式....?

感謝

+0

這對一次性設置功能沒有幫助,但取決於事件類型,您可能更適合[事件代表團](http://mootools.net/docs/core/Element/Element.Delegation )而不是嘗試在符合條件的每個元素上設置事件。 – Grim 2013-03-19 21:18:30

+0

在這種情況下,我不確定代表團會更有效率,因爲我不知道目標元素的位置,所以我會回來使用整個DOM樹,可能會帶來更大的代理程序開銷,只是猜測雖然! – 2013-03-20 09:10:06

回答

0

modern browser有一個內置的名爲getElementsByClassName函數,據我所知查詢'.closethis'時MooTools的將引擎蓋下使用。這是super fast,所以我認爲你不需要擔心頁面初始化時運行幾次。

0

直接向你傳達:是的,在我看來,這是馬虎;但我認爲你不必擔心。

它不會成爲一個問題,關於功能,而是「好風格」。 也許你可以寫更多的任務特定的JavaScript。爲某些任務或功能編寫類。你會感到驚訝,你會多久重複使用一些類或一般的源代碼,以及在開發一個網頁時多少時間可以節省你。 我建議你(仔細)閱讀thisthis one,並嘗試從中受益。因爲這是你一直在問的「更好的方式/模式」。

乾杯和快樂的編碼! =)

相關問題