为什么IE9要花这么长时间来执行一些JQuery ?
Why is IE9 taking so long to execute some JQuery?
我有一个应用程序,它在一个ASPX页面中对HTML表(500x)中的每个元素执行这段代码(JQuery 1.4.2)
$(".ArtRow_" + artId).each(function () {
if ($(this).find(".ArtOpen_" + artId).length <= 0) return;
.... };
省略带有find
的行使该页面正常加载,但使用find:
- 火狐,chrome: +- 3sec
- 在IE9中:+- 42秒(双核使用50% cpu)
我在IE中做了一个配置文件,95%的时间,IE正在执行函数CLASS
(调用堆栈:find.f.filter.CLASS
)
I tried
- 使用带有find 的Id
- 通过使用固定类 消除字符串连接
to no avail(42秒)
有人知道吗?提前感谢!
编辑:我现在确信每个都花了这么长时间。我跳过了它,因为对于空代码块,它不会花费42秒来加载。但是加上几行注释,它又花了42秒,所以我猜这是某种不太智能的死代码检测。
在显式请求时:箭头所在的HTML
<tbody>
<tr class="SB_ReceptielijstHeader">
<th>Artikel / Bestelling</th>
<th>Besteldatum</th>
<th>Pr. School</th>
<th>Pr. Levering</th>
<th class="Number">Aantal besteld</th>
<th class="Number">Aantal ontvangen</th>
</tr>
<tr class="SB_ReceptielijstArtikelHeader ArtRow_132109">
<td id="Titel_132109" class="Artikel" colspan="5">
<img src="images/SB/Icons/23-book.png" style="vertical-align:middle"> 9789030170433 - NANO 1</td>
<td class="Number ArtikelTotal">
<input type="hidden" value="132109" class="Artikel_Id">
<input type="hidden" value="" id="ArtLevLn_132109">
<input type="text" value="12" style="text-align:right" size="4" id="Aantal_132109" name="Aantal_132109" maxlength="4">
</td>
</tr>
<tr class="SB_ReceptielijstRow ArtRow_132109 ArtRowInvisible">
<td>Bestelling 81 / Lijn </td>
<td>02/07/2010</td>
<td>24,05</td>
<td>22,85</td>
<td class="ArtOpen_132109 Number">
</td>
<td id="ArtToew__132109" class="ArtToew ArtToew_132109 Number">
<div style="display:none" class="ArtBestLn">
<input type="hidden" value="">
</div>
<input type="text" style="text-align:right" size="4" id="Aantal_" name="Aantal_" maxlength="4">
</td>
</tr>
<tr class="SB_ReceptielijstArtikelHeader ArtRow_134399">
<td id="Titel_134399" class="Artikel" colspan="5">
<img src="images/SB/Icons/23-book.png" style="vertical-align:middle"> 9789045533322 - HANDELWIJS 3 INCL CDROM HERWERKT 2010</td>
<td class="Number ArtikelTotal">
<input type="hidden" value="134399" class="Artikel_Id">
<input type="hidden" value="" id="ArtLevLn_134399">
<input type="text" value="25" style="text-align:right" size="4" id="Aantal_134399" name="Aantal_134399" maxlength="4">
</td>
</tr>
<tr class="SB_ReceptielijstRow ArtRow_134399 ArtRowInvisible">
<td>Bestelling 81 / Lijn </td>
<td>02/07/2010</td>
<td>23,95</td>
<td>23,60</td>
<td class="ArtOpen_134399 Number">
</td>
<td id="ArtToew__134399" class="ArtToew ArtToew_134399 Number">
<div style="display:none" class="ArtBestLn">
<input type="hidden" value="">
</div>
<input type="text" style="text-align:right" size="4" id="Aantal_" name="Aantal_" maxlength="4">
</td>
</tr>
</tbody>
之所以慢是因为它运行了500次。
我想这不是你想要的答案,所以如果你可以发布你的HTML结构,我们可以看看是否有一种方法来优化你使用的选择器,使它更快。
我无法想象下面的代码与上面的。find的处理方式不同,但您也可以尝试:
$(".ArtOpen_" + artId, this)
然而,按类获取内容是密集的。没有原生javascript支持,所有节点都必须检查以确定哪些节点具有该类。
相关文章:
- 如何在category.php中执行jquery,这应该适用于类别wordpress中的每个帖子
- 在Grails中的gsp中执行jquery代码
- 使用数组表示法对多个字段执行jQuery日期选择器
- 可以'不能间接执行JQuery函数
- 必须等待执行 jQuery,直到加载服务
- 如何按顺序执行 jQuery 函数
- 如何在 ul 标签下执行 JQuery UI 自动完成
- 如何在Safari提交表单之前执行JQuery
- 对未知数量的元素执行Jquery循环
- 页面内容加载完毕后执行Jquery功能
- 在动态列表中单击的特定img上执行JQuery
- 如何在运行时添加的对象上执行Jquery插件
- Android-Javascript:如何在webview中执行jquery
- 在setTimeout中执行jQuery成员函数而不关闭的方法
- Jquery:在Jquery的(字符串)变量中执行Jquery脚本
- 执行Jquery函数()的两个条件
- 表单提交成功后调用/执行JQuery函数
- 当记录达到10以上时,Bootstrap中的DataTable不执行jQuery
- 通过javascript加载jQuery后执行jQuery代码
- 如何正确执行Jquery动画浮动