2011-04-24 139 views
1

我嘗試以下代碼用於更新元素的值:JQUERY時間複雜度

第一:

$(this).parent().prev().children(':selected').val(); 

然後: 我試圖與以下代碼:

$(this).parent().prev().children('.pgs').val();//`.pgs` is class of `select` drop down 

上一個:

我也試着用下面的代碼:

$(this).parent().prev().find('.pgs').val(); 

這裏的代碼第一個片段花了一點時間比最後兩個片段。爲什麼第一個片段會顯示這種行爲?我如何找到更多關於jQuery操作時間複雜度的信息?

回答

2

:selected不是CSS選擇器瀏覽器的理解,它是通過Sizzle specificly實施(選擇引擎jQuery的使用),因此它會經過一個非常不同的代碼路徑。

.pgs然而,由於jQuery可以使用本地cSS選擇方法,例如querySelector()querySelectorAll(),所以它是一個完全有效的CSS選擇器,它可以大大優化瀏覽器。

至於更多的研究,我沒有一個很好的資源給你。然而,一般的規則是,如果它是a jQuery selector而不是a valid CSS selector它會變慢,因爲它不能利用瀏覽器中的幾個本地代碼路徑。