为什么IE9花了这么长时间来执行一些JQuery?
我有一个应用程序在ASPX页面中为HTML表格(500x)中的每个元素执行这段代码(JQuery 1.4.2)
$(".ArtRow_" + artId).each(function () {
if ($(this).find(".ArtOpen_" + artId).length <= 0) return;
.... };
用find
行会使这个页面正常加载,但是用find:
我在IE中做了一个配置文件,并且95%的时间,IE正在执行函数CLASS
(调用堆栈: find.f.filter.CLASS
)
我试过了
无济于事(42s)
任何人都有线索? 提前致谢!
编辑:我现在相信,每个人都花了这么长时间。 我跳过它,因为空代码块没有花费42秒加载。 但是有一些评论int,它又花了42s,所以我想这是一种不是非常聪明的死码检测。
明确要求:ArtRow所在的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支持,所有节点都必须经过检查才能确定哪个类具有该类。 执行500次,...
链接地址: http://www.djcxy.com/p/43671.html上一篇: Why is IE9 taking so long to execute some JQuery?
下一篇: Remove space between 2 tables HTML CSS and image removes background image