2011-09-13 112 views
0

考慮HTMLjQuery選擇優化

<div id="one" > 
<input type="radio" value="x" name="group" > 
<input type="radio" value="y" name="group" > 
<input type="radio" value="z" name="group" > 
</div> 

我有一個關於使用jQuery的DOM訪問兩個問題。

  1. 問題一

我只是想找到輸入電臺的值,它是selected.So我有

方法1:

var value=""; 
$("#one input:radio[name=group]").each(function(){ 
    if($(this).is(:checked)){ 
    value=$(this).val(); 
    } 
}); 

方法2:

var value=$("#one input:radio[name=group]:checked").val(); 

兩種方法之間有相當大的性能差異嗎?而不是方法2在一行代碼中執行該操作。

或者請解釋實際上發生在jquery裏面的行"input:radio[name=group]:checked"

  1. 問題二

我想設置checked屬性真正 具有值輸入 「Y」。所以

$("input:radio").filter("[value=y]").attr('checked', true); 

$("#one input:radio[name=group]").filter("[value=y]").attr('checked', true); 

將這樣做。

添加「div id」和「[name = group]」是否有任何性能差異?

+0

document.getElementById是最快的一個! – wukong

+0

「在兩種方法之間是否存在相當大的性能差異?而不是方法2在一行代碼中執行該操作。」在一行代碼中執行操作與性能*本身無關*。 – jensgram

+0

是的..我的意思是,它本身,唯一的好處是保存代碼行.. – Sarath

回答

1

當它歸結爲純粹的PERF,有一個解決方案,我找到更好的:「你自己做吧」(上jsperf

我做了測試,但它只花了我的時間,使複製/粘貼;)

http://jsperf.com/selectoroptimization

從結果我補充,最好的方法似乎是第二個關於第一個問題,但對於第二個它依賴於瀏覽器。

+0

好的謝謝你的「jsperf」..找到實際上發生在JQuery內部的任何解釋。 – Sarath

+0

不,我不太熟悉jQuery中發生的事情。 –

+0

Py:太棒了!我不知道jsperf! – tsimbalar