Javascript fullcalendar jquery调用失败

Javascript fullcalendar jquery调用失败,javascript,jquery,fullcalendar,Javascript,Jquery,Fullcalendar,请原谅我缺乏Js/jquery知识-希望这将是一个简单的问题来回答。我想我一定是错过了剧本什么的 所以当日历呈现时 Calendar.prototype.initialRender = function () { var _this = this; var el = this.el; el.addClass('fc'); !fails here 控制台告诉我“这”是完整的日历 Calendar {loadingLevel: 0, ignoreUpdateViewSize:

请原谅我缺乏Js/jquery知识-希望这将是一个简单的问题来回答。我想我一定是错过了剧本什么的

所以当日历呈现时

Calendar.prototype.initialRender = function () {
   var _this = this;
   var el = this.el;
   el.addClass('fc');  !fails here

控制台告诉我“这”是完整的日历

Calendar {loadingLevel: 0, ignoreUpdateViewSize: 0, freezeContentHeightDepth: 0, el: div#calendar, viewsByType: {…}, …}
constraints: Constraints {eventManager: EventManager, _calendar: Calendar}
currentDate: Moment {_isAMomentObject: true, _isUTC: true, _pf: {…}, _locale: Locale, _d: Tue Jun 02 2020 17:03:57 GMT+0100 (British Summer Time), …}
defaultAllDayEventDuration: Duration {_isValid: true, _milliseconds: 0, _days: 1, _months: 0, _data: {…}, …}
defaultTimedEventDuration: Duration {_isValid: true, _milliseconds: 7200000, _days: 0, _months: 0, _data: {…}, …}
el: div#calendar
eventManager: EventManager {calendar: Calendar, stickySource: ArrayEventSource, otherSources: Array(0), jQuery1124013653863441134595: {…}}
freezeContentHeightDepth: 0
ignoreUpdateViewSize: 0
loadingLevel: 0
localeData: Locale {_fullCalendar_weekCalc: "local"}
optionsManager: OptionsManager {_watchers: {…}, _props: {…}, _calendar: Calendar, overrides: {…}, dynamicOverrides: {…}, …}
viewSpecManager: ViewSpecManager {optionsManager: OptionsManager, _calendar: Calendar, viewSpecCache: {…}}
viewsByType: {}
__proto__: Object
但显示“el”不是addClass工作所需的jquery对象

>el
div#calendar

尝试调用addClass失败

el.addClass('fc')
VM14452:1 Uncaught TypeError: el.addClass is not a function
    at eval (eval at Calendar.initialRender (fullcalendar.self-e9ae1b2c551f2f852ffbb704ecc1e434ee9bbc2cda72ea67fa3631cdace57650.js?body=1:9501), <anonymous>:1:4)
    at Calendar.initialRender (fullcalendar.self-e9ae1b2c551f2f852ffbb704ecc1e434ee9bbc2cda72ea67fa3631cdace57650.js?body=1:9501)
    at Calendar.render (fullcalendar.self-e9ae1b2c551f2f852ffbb704ecc1e434ee9bbc2cda72ea67fa3631cdace57650.js?body=1:9490)
    at HTMLDocument.<anonymous> (calendar.self-38bc6bd2dda3534fb8abc461acd3125490aec51a3e037753ae5812dac1925814.js?body=1:4)
    at Object.t.dispatch (turbolinks.self-c5acd7a204f5f25ce7a1d8a0e4d92e28d34c9e2df2c7371cd7af88e147e4ad82.js?body=1:6)
    at r.notifyApplicationAfterPageLoad (turbolinks.self-c5acd7a204f5f25ce7a1d8a0e4d92e28d34c9e2df2c7371cd7af88e147e4ad82.js?body=1:6)
    at r.pageLoaded (turbolinks.self-c5acd7a204f5f25ce7a1d8a0e4d92e28d34c9e2df2c7371cd7af88e147e4ad82.js?body=1:6)
    at turbolinks.self-c5acd7a204f5f25ce7a1d8a0e4d92e28d34c9e2df2c7371cd7af88e147e4ad82.js?body=1:6


事实证明,整个日历页面上的示例是错误的——我印象深刻

当您需要提供jQuery元素时,该示例向FullCalendar提供DOM元素

document.addEventListener('DOMContentLoaded', function() {
  var calendarEl = document.getElementById('calendar');
  -- **this needs to be calendarEl = $('#calendar')**

  var calendar = new FullCalendar.Calendar(calendarEl, {plugins: [ 'dayGrid' ]});

  calendar.render();
});

“为什么el属性不是JQuery对象”。。。我猜是因为,从fullCalendar 4开始,fullCalendar在内部不使用jQuery。除非你用的是旧版本?你没有提到版本。无论如何,如果您想将一个类添加到本地DOM元素中,那么只需使用
el.classList.add(“fc”)-请参阅。如果您确实喜欢使用jQuery,那么只需在jQuery构造函数中包装
el
$(el).addClass(“fc”)不,这根本不是真的。您可以在fullCalendar站点上找到的所有演示(大部分都有可用的源代码链接)都表明,当您提供DOM元素时,它可以工作。下面是我使用fullCalendar 4制作的一个小演示,它简单地展示了它的工作原理:。这里有另一个演示,非常简单地说明,如果您使用jQuery对象,那么它就不起作用了——检查控制台消息:我不知道您是如何在回答中得出结论的。你能提供一个复制这种行为的演示吗?我只能想象你在做一些奇怪的事情,比如混用版本,弄乱完整的日历源代码,或者对你试图使用的版本使用错误的语法。另外,如果您使用的是使用jQuery的版本3,那么您可以在此处找到文档和示例:。请注意,语法和许多其他内容与v4非常不同。抱歉-问题是我已经使用gem安装了FullCalendar,这为版本3.9ok提供了帮助。该页面已经显示了如何初始化日历的示例,如
$('#calendar').FullCalendar({events:'/events.json')例如。除此之外,您还应该查看v3文档的简介部分,和/或研究您在v3文档周围找到的演示的源代码。从这里开始:当然,另一种选择是将fullCalendar版本升级到最新的4.x版本(目前4.42是当前版本)
document.addEventListener('DOMContentLoaded', function() {
  var calendarEl = document.getElementById('calendar');
  -- **this needs to be calendarEl = $('#calendar')**

  var calendar = new FullCalendar.Calendar(calendarEl, {plugins: [ 'dayGrid' ]});

  calendar.render();
});