0

我正在使用 FullCalendar 加载 Google 日历。我想将a日历中某个类的所有标签都转换为spans。如果我在页面加载后在 Scratchpad 中执行它,我的代码效果很好,但是如果我把它放在我的 JavaScript 文件中的日历代码之后,它不会做任何事情(所有的as 仍然a是 s。)这是我的代码:

$(document).ready(function() {
  $('#calendar').fullCalendar({
      eventSources: [
        'MY CALENDAR URL',
        {
            url: 'https://www.google.com/calendar/feeds/en.usa%23holiday%40group.v.calendar.google.com/public/basic',
            className: 'holiday'
        }
      ],
      header: {
        left:   'title',
        center: '',
        right:  'prev,next'
      }
  });
  var aclass = $('a.holiday').attr('class');
  var astyle = $('a.holiday').attr('style');
  var atext = $('a.holiday').html();
  $('a.holiday').replaceWith('<span style="'+ astyle +'" class="'+ aclass +'">'+ atext +'</span>');
});

JS 错误控制台中仅显示两个错误:

[17:34:08.182] 不推荐使用 getUserData() 或 setUserData()。请改用 Wea​​kMap 或 element.dataset。

[17:34:08.663] SyntaxError:不推荐使用 //@ 指示源映射 URL 编译指示。改用 //#

它们似乎都与我的问题无关。一个位于 jQuery 中,另一个位于 requestNotifier.js 中。

4

2 回答 2

1

FullCalendar 提供了一些不错的钩子,您可以使用它们来根据需要设置事件样式。

完成工作的一种方法是将当前代码移入eventAfterAllRender,如下所示:

$('#calendar').fullCalendar({
  [...]
  eventAfterAllRender: function() {
    var aclass = $('a.holiday').attr('class');
    var astyle = $('a.holiday').attr('style');
    var atext = $('a.holiday').html();
    $('a.holiday').replaceWith('<span style="'+ astyle +'" class="'+ aclass +'">'+ atext +'</span>');
  }
  [...]
});
于 2013-08-11T17:31:33.890 回答
0

好的,弄清楚了:必须强制加载日历,因此将代码与不同的事件分开效果很好:

$(document).ready(function() {
  $('#calendar').fullCalendar({
      eventSources: [
        'https://www.google.com/calendar/feeds/r9iglfiamf6s7vr61lspgaa35g%40group.calendar.google.com/public/basic',
        {
            url: 'https://www.google.com/calendar/feeds/en.usa%23holiday%40group.v.calendar.google.com/public/basic',
            className: 'holiday'
        }
      ],
      header: {
        left:   'title',
        center: '',
        right:  'prev,next'
      }
  });
});
$(window).load(function() {
  var aclass = $('a.holiday').attr('class');
  var astyle = $('a.holiday').attr('style');
  var atext = $('a.holiday').html();
  $('a.holiday').replaceWith('<span style="'+ astyle +'" class="'+ aclass +'">'+ atext +'</span>');
});
于 2013-08-10T23:13:04.350 回答