2011-04-19 65 views
1

我正在通過傳入一些HTML字符串來創建一個簡單的jQuery對象。但在IE7中,警報告訴我需要大約125ms。這個jQuery選擇器非常慢。爲什麼?

var timeStart = new Date(); 
var allTabs = jQuery(tmbJsContent); 

var timeEnd = new Date(); 
alert(timeEnd-timeStart); 

tmbJsContent包含10個div的html,其中包含表格。我瞭解它有點長,但由於沒有DOM被操縱,只有一個jQuery對象正在創建。什麼可能需要這麼長時間?我怎樣才能讓這個更快?

感謝

+10

你沒有發現有必要發佈'tmbJsContent'變量的值嗎? – 2011-04-19 17:30:13

+1

我沒有看到選擇器。 – BoltClock 2011-04-19 17:30:22

+0

@Darin - 你如何外交...... :) – ChaosPandion 2011-04-19 17:30:34

回答

3

創建一個容器元素,並更新其內容innerHTML

var container = document.createElement("div"); 
container.innerHTML = tmbJsContent; 

大約需要一毫秒:)

+0

如果OP使用IE6 - 此解決方案不起作用。 – clamchoda 2011-04-19 17:34:12

+0

怎麼回事?這是標準的JavaScript,應該在任何地方工作,在IE6事件。 'document.createElement'是一個標準的DOM方法,而'innerHTML'是由IE發明的。 – Andris 2011-04-19 17:37:50

+0

Becaise IE6不支持對innerHTML的操作;(請不要誤解我的朋友,你的回答是完美的,瀏覽器是不完善的) – clamchoda 2011-04-19 17:40:09

1

要真正回答這個問題,我們需要看到的值tmbJsContent ...

與此同時,如果您的選擇器很慢,請嘗試通過傳入容器(作爲上下文)來限制選擇器的「搜索區域」。

實施例:

var context = jQuery('#SomeContainer'); 
var target = jQuery('MySelector', context); 

這限制了選擇器搜索到的容器被傳遞-英寸