2011-03-21 39 views
0

是否有更好的性能方式來使用jQuery或JavaScript編寫此jQuery選擇器。我主要看選擇器速度。 http://jsperf.com例子是一個加號。從嵌套元素獲取val()的選擇器性能

$('#formEdit div input.t:visible').val(); 

<div id="formEdit"> 
    <div> 
    <input class="t" type="text"> 
    <input style="display:none;" class="t" type="text"> 
    <input style="display:none;" class="t" type="text"> 
    </div> 
</div> 
+0

我想如果沒有jQuery是速度更快,使用jQuery很容易,但並沒有太大的差別。 – 2011-03-21 06:23:08

回答

2

一些更有趣的結果基於我的測試。爲了方便起見,我已經包含了原始測試和@ corroded的測試。最快的一個使用純JS。

jsperf link

var form = document.getElementById('formEdit'); 
var ts = form.getElementsByClassName('t'); 
var value; 
for (var i = 0; i < ts.length; i++) { 
    if (ts[i].style.display != 'none') { 
    value = ts[i].value; 
    break; 
    } 
} 
+0

IE5到IE8不支持'getElementsByClassName()'。 – Pinkie 2011-03-21 06:55:56

+0

+1對於jsperf測試 – Pinkie 2011-03-21 06:58:09

+0

是的,你可以下載一個替換實現。 – Anurag 2011-03-21 06:58:35

2

你是否有其他形式的input.t類?

如果不只是用

$("#formEdit .t:visible").val(); 

這裏是爲你jsperf:

鏈接:http://jsperf.com/test-for-so

檢查FF和鉻礦仍然較快

你你的整個頁面上有其他的.t類嗎?

+0

嗯爲什麼它在我的上看起來更快?可能是因爲我使用鉻? – corroded 2011-03-21 06:24:06

+0

其實你更快。我正在做更多的測試。 – Pinkie 2011-03-21 06:29:47

+0

在我的速度更快 – 2011-03-21 06:30:22