2011-04-24 136 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它会变慢,因为它不能利用浏览器中的几个本地代码路径。