English 中文(简体)
jQuery FullCalendar Fetch Event Optimization
原标题:

I was wondering if someone could give me some pointers to help optimize my jQuery Full Calendar Code. The issue i m running into is when I fetch a lot of events through AJAX (> 25), the browser stalls and becomes unresponsive usually resulting in a message to the user to abort the script. I m trying to avoid this error, and I was wondering if there was something I could do in my function to improve the loading time.

Here is a copy of the function I m running:

//Load the Business Unit Calendar Events
function ajaxBUEvents(start, end){
    //Loop through the selected checked calendars
    $(selectBUCalendars()).each(function(i, cal){
        $.ajax({
            type:  POST ,
            data: { startDate : start,  endDate : end,  buCals[] : cal}, 
            url:  <?= site_url( AJAX/calendar_ajax/get_cal_events ); ?> , 
            dataType:  json ,
            async: false,
            beforeSend: function(){
                $( #loading-dialog ).dialog({minHeight: 100, width: 250}).dialog( open );
                $( #loading-dialog p ).text( Loading  +cal+  Calendar Events );
            }, 
            success: function(calevents){
                $.each(calevents, function(i, calevent){
                    $( #calendar ).fullCalendar( renderEvent , calevent, true); 
                }); 
            }
        });
    }); 
    $( #loading-dialog ).dialog( close );
}

And here is a sample of the JSON that is returned, this is only one event. Sometimes there can be 50+ events returned:

[{"id":4377,"title":"BWR - Lighting Affiliates Dinner - Actualized","start":1259874000,"end":1259888400,"className":"BWR Actualized","allDay":false,"editable":false}]

Thank you for the help!

最佳回答

The trick is to use addEventSource instead of renderEvent. Because with renderEvent your whole calendar is redrawn for every single event you add. While addEventSource adds all events from the source you provide and then does a single redraw of the calendar.

success: function(calevents){
    $( #calendar ).fullCalendar( addEventSource , calevents); 
}

I even made two demopages for you, so you can check the difference in performance.

The slow version adds 50 events via renderEvent (note how whole the calendar is redrawn for every event)

http://jsbin.com/ewuka

The fast version adds 50 events via addEventSource (note how the calendar only gets redrawn for once)

http://jsbin.com/udode

问题回答

暂无回答




相关问题
getGridParam is not a function

The HTML: <a href="javascript:void(0)" id="m1">Get Selected id s</a> The Function: jQuery("#m1").click( function() { var s; s = jQuery("#list4").getGridParam( selarrrow )...

selected text in iframe

How to get a selected text inside a iframe. I my page i m having a iframe which is editable true. So how can i get the selected text in that iframe.

jQuery cycle page with links

I am using the cycle plugin with pager functionality like this : $j( #homebox ) .cycle({ fx: fade , speed: fast , timeout: 9000, pager: #home-thumbs , ...

jquery ui dialog opens only once

I have a button that opens a dialog when clicked. The dialog displays a div that was hidden After I close the dialog by clicking the X icon, the dialog can t be opened again.

jConfirm with this existing code

I need help to use jConfirm with this existing code (php & Jquery & jAlert). function logout() { if (confirm("Do you really want to logout?")) window.location.href = "logout.php"; } ...

Wrap text after particular symbol with jQuery

What I m trying to do, is wrap text into div inside ll tag. It wouldn t be a problem, but I need to wrap text that appears particularly after "-" (minus) including "minus" itself. This is my html: &...

热门标签