在将它添加到dom之前操纵由html组成的变量(jQuery 1.4中的新增功能???)

时间:2010-04-28 23:10:34

标签: jquery dom-manipulation

我以为我在第一次发布jQuery 1.4时已经看过这个,但现在似乎找不到任何东西。

我有一个日历表,它是从json ajax响应中动态构建的。

该表构建在一个名为putHtml的变量中。

目前,一旦将表添加到DOM中,我就运行一个showEvents函数,该函数接收每个事件并将其添加到表中的相应单元格中。 不幸的是,当我有100个事件时,这意味着我正在更新DOM 100单独的时间。这变得相当缓慢。

我使用showEvents函数动态添加事件,所以如果我可以使用相同的函数,并指定在DOM中查找要添加事件的单元格,或者查看变量,那将是非常好的(假设我做对了,你可以用jQuery实际做到这一点。

我使用的代码是这个

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);
    }
}

在尝试在添加到dom之前操作变量putHtml时,我将putHtml传递给showEvent函数,所以不是'(whereEvent,'div #calendar'),我有(whereEvent,putHtml),但是没有不行。

当然,实现这一目标的另一种方法是,当我创建每个单元格时,我遍历事件json,并在当时将适当的html应用于单元格,但这意味着重复地在整个json中运行为了让事件放入单元格。

有没有其他/更好的方式来做这样的事情?

1 个答案:

答案 0 :(得分:2)

我想我曾经有类似的问题。也许这有助于你:

  

Manipulating the “data” from $.ajax success: function(data) {