2012-07-13 71 views
0

我想對我的代碼做一些速度改進,我想知道哪一個是更好/更快的訪問DOM的方式。jquery通過ID或緩存DOM節點獲得(ID)

我有一個對應於< li>的ID的數組,我想通過它們循環並添加一個類。

我做這件事的方法有兩種: 1)通過IDS陣列循環,通過id來獲取元素和應用類

for(var i=0; i<idArray.length i++){ 
     $('#'+idArray[i]).addClass('someclass') 
    } 

2)提取DOM節點,高速緩存,然後遍歷它,所以我只對DOM

var column=$('#my_ul'); 

    for(var i=0; i<idArray.length i++){ 
     column.find('#'+idArray[i]).addClass('someclass') 
    } 

的一部分迭代預先感謝您的幫助

+0

您可以自己測試一下:http://jsperf.com/ – 2012-07-13 10:49:46

+0

你應該看看在[jsperf.com](http://jsperf.com)自己測試一下,或者看看[this](http://jsapi.info/jquery/1.7.2/jQuery.fn.find)jQuery處理它。 – Andreas 2012-07-13 10:54:18

回答

1

你可以通過避免一個循環:

$("#" +idArray.join(",#")).addClass("someclass"); 

的選擇就解決這樣的:

"#" +["asd","dasd","daa"].join(",#") 
//"#asd,#dasd,#daa" 
+0

感謝Esailija這是一個很好的推薦 – evkorres 2012-07-13 10:58:49

0

選項1應該會更快。但是,如果這些都是單親的孩子,那麼將該類添加到父母可能是一個好主意。

+0

是的,這是一個好主意,李是我的情況下的父母,所以我在那裏添加類。謝謝 – evkorres 2012-07-13 11:00:32