我以爲我在jQuery 1.4的第一個公告中看到了這個,但現在似乎找不到任何東西。在將html添加到dom之前處理由html組成的變量(新的jQuery 1.4 ???)
我有一個日曆表,它是從json ajax響應動態構建的。
該表內置於名爲putHtml的變量中。
目前,一旦將表格添加到DOM中,我運行一個showEvents函數,該函數接收每個事件並將其添加到表格中的相應單元格中。 不幸的是,當我有100個事件時,這意味着我正在更新DOM 100的單獨時間。哪個變得相當緩慢。
我使用showEvents函數動態添加事件,所以如果我可以使用相同的函數,並指定在單元格的DOM中查找以添加事件或查找變量(假設我已經明白了,你可以用jQuery來做到這一點)。
我用currenlty的代碼是這樣的
jQuery('div#calendars').append('putHtml.join('')); for(var e in thisCal.events){ showEvent(thisCal.events[e]); }
果然不出我所試圖做的卻是
for(var e in thisCal.events){ showEvent(thisCal.events[e],putHtml); } jQuery('div#calendars').append('putHtml.join(''));
的showEvents函數試圖操縱時,看起來像這樣
function showEvents(event){ var eventDate=event.date; var eventTime=event.time; var eventGroup=event.group; var eventName=event.name; var eventType=event.type; var whereEvent=jQuery('div.a'+eventDate, 'table.'+eventGroup); var putEvent='<div class="event" id="a+'eventDate+'_'+eventTime+'">'+eventName+'</div>' jQuery(whereEvent, 'div#calendar').append(putEvent); if(eventType>2){ jQuery(whereEvent, 'div#listings').append(putEvent); } }
將變量putHtml添加到dom之前,我將putHtml傳入showEvent樂趣中ction,所以不是'(whereEvent,'div#calendar'),我有(whereEvent,putHtml),但那不起作用。
當然,另一種完成此操作的方法是當我製作每個單元格時,我迭代事件json,並將適當的html應用到單元格中,但這意味着重複運行整個json以便將事件放入單元格中。
是否有另一種/更好的方式來做這樣的事情?
謝謝SSSOOOO了。加載時間從2秒延長到看起來小於1(由於某種原因,console.time現在不適用於我)。 – pedalpete 2010-04-29 00:13:57
更正,從3.8秒到588毫秒! – pedalpete 2010-04-29 00:25:36