代码在Firefox Scratchpad中有效,但在代码中无效

时间:2013-08-10 20:12:51

标签: javascript jquery dom fullcalendar

我正在使用FullCalendar加载Google日历。我想将日历中某个类的所有a标记转换为span s。如果我在Scratchpad中执行它,在页面加载后,我的代码工作得很好,但是如果我把它放在我的JavaScript文件中的日历代码之后,它就没有做任何事情(所有a仍然是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()。   请改用WeakMap或element.dataset。

     

[17:34:08.663] SyntaxError:使用// @表示源地图URL   pragma已弃用。使用//#而不是

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

2 个答案:

答案 0 :(得分: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>');
  }
  [...]
});

答案 1 :(得分: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>');
});