2012-12-11 49 views
0

我刚开始使用jQuery fullcalendar http://arshaw.com/fullcalendar/,我遇到了一个奇怪的问题。我从点击功能启动日历,并且第一次打开日历并且打开一个日历。但是,如果我再次点击,它会添加1,我现在有两个日历。每次点击它时都会发生这种情况,每次都会添加一个日历。是否有一些选项需要添加才能重新初始化日历。我能看到的唯一选择是'渲染'选项,但无法解决如何使用它。由于jquery fullcalendar打开多个日历

UPDATE:新的代码更新

$(function() { 
    $('#calhead1').on("click", function(){ 

     $("#msgcontent, #msgcontent2, #main, #msgtest").hide(1000); 
     $("#cal").show(); 
    }); 
}); 
    // Start Calendar Script // 

    $(function() { 

      var date = new Date(); 
      var d = date.getDate(); 
      var m = date.getMonth(); 
      var y = date.getFullYear(); 

      $('#cal').fullCalendar({ 

       header: { 
        left: 'prev,next today', 
        center: 'title', 
        right: 'month,basicWeek,basicDay' 
       }, 
       editable: true, 
       theme: true, 
       width: 760, 
       height: 470, 
       events: [ 
        { 
         title: 'All Day Event', 
         start: new Date(y, m, 1) 
        }, 
        { 
         title: 'Long Event', 
         start: new Date(y, m, d-5), 
         end: new Date(y, m, d-2) 
        }, 
        { 
         id: 999, 
         title: 'Repeating Event', 
         start: new Date(y, m, d-3, 16, 0), 
         allDay: false 
        }, 
        { 
         id: 999, 
         title: 'Repeating Event', 
         start: new Date(y, m, d+4, 16, 0), 
         allDay: false 
        }, 
        { 
         title: 'Meeting', 
         start: new Date(y, m, d, 10, 30), 
         allDay: false 
        }, 
        { 
         title: 'Lunch', 
         start: new Date(y, m, d, 12, 0), 
         end: new Date(y, m, d, 14, 0), 
         allDay: false 
        }, 
        { 
         title: 'Birthday Party', 
         start: new Date(y, m, d+1, 19, 0), 
         end: new Date(y, m, d+1, 22, 30), 
         allDay: false 
        }, 
        { 
         title: 'Click for Google', 
         start: new Date(y, m, 28), 
         end: new Date(y, m, 29), 
         url: 'http://google.com/' 
        } 
       ] 
      }); 

      }); 

    // End Calendar Script // 

回答

2

调用fullCalendar函数旨在创建一个新的日历,以便您的脚本完全按照它的设想进行操作。你只需要在你的click事件处理程序之外移动该函数。

我也建议从live移动到新的on方法,因为jQuery现在已弃用live

您的新代码是这样:

$(function() { 

    $('#cal').fullCalendar({ 

     header: { 
      left: 'prev,next today', 
      center: 'title', 
      right: 'month,basicWeek,basicDay' 
     }, 
     editable: true, 
     theme: true, 
     width: 760, 
     height: 470, 
     events: [ 
      { 
       title: 'All Day Event', 
       start: new Date(y, m, 1) 
      }, 
      { 
       title: 'Long Event', 
       start: new Date(y, m, d-5), 
       end: new Date(y, m, d-2) 
      }, 
      { 
       id: 999, 
       title: 'Repeating Event', 
       start: new Date(y, m, d-3, 16, 0), 
       allDay: false 
      }, 
      { 
       id: 999, 
       title: 'Repeating Event', 
       start: new Date(y, m, d+4, 16, 0), 
       allDay: false 
      }, 
      { 
       title: 'Meeting', 
       start: new Date(y, m, d, 10, 30), 
       allDay: false 
      }, 
      { 
       title: 'Lunch', 
       start: new Date(y, m, d, 12, 0), 
       end: new Date(y, m, d, 14, 0), 
       allDay: false 
      }, 
      { 
       title: 'Birthday Party', 
       start: new Date(y, m, d+1, 19, 0), 
       end: new Date(y, m, d+1, 22, 30), 
       allDay: false 
      }, 
      { 
       title: 'Click for Google', 
       start: new Date(y, m, 28), 
       end: new Date(y, m, 29), 
       url: 'http://google.com/' 
      } 
     ] 
    }); 
    $('#calhead1').on("click", function(){ 

        $("#msgcontent, #msgcontent2, #main, #msgtest").hide(1000); 
        $("#cal").show(); 
        var date = new Date(); 
        var d = date.getDate(); 
        var m = date.getMonth(); 
        var y = date.getFullYear(); 
    }); 

}); 
+0

当第一次初始化日历现在会发生什么是,所有这些都是可见的是标题。我必须点击今天才能看到完整的日历。 – user1532468

+0

这看起来正确,但需要在日历初始化之前声明d,m和y变量。把它们移到点击事件之外,然后再调用$('#cal')。fullCalendar({... – tocallaghan

+0

)如果你看看我更新的代码,那就是现在的样子,我该如何更新它。 谢谢 – user1532468

2
  1. jQuery的直播功能已过时,使用。对()
  2. 初始化您的日历上点击事件之外,只是显示和隐藏它点击。