我需要加速这个jQuery行的select标签,可能有几千个选项标签。有没有比以下jQuery线更快的东西?也许是javascript?我甚至在寻找替代的b / c代码,如果与selecttagname更改事件一起使用,则代码很慢且无响应。
var selectedsize = $("Select[name='selecttagname'] option:selected").size();
<select multiple name='selecttagname'>
<option selected="selected" value="1">Aladin</option>
<option value="2">Atlantis</option>
.... ~5000 more of these</option></select>
感谢。
答案 0 :(得分:1)
首先,你的选择器是无效的,所以jQuery手动解析选择器和DOM树来找到你的元素。
这比你所拥有的轻微改进:
var count = $('select[name="selecttagname"]').find('option:selected').length
注意我如何将选择器拆分为2,第一部分将由支持 querySelectorAll API的浏览器加速,并简化第二个查询仍然是自定义的并且将保持慢速({{{ 1}}是一个jQuery扩展)。这是你用jQuery做的最好的事情。
现在可能一些额外的速度,您可以手动查询DOM,不确定这是否会更快,但您可以跳过Sizzle解析器的':selected'部分。
试试这个:
:selected
理论上,最后一个更快。在测试后,请告诉我们您的发现。