Fullcalendar - как получить позицию события, на которое нажали

есть ли возможность получить позицию события click с помощью метода eventClick?

 var calendar = new Calendar(calendarEl, {

  eventClick: function(info) {
    alert('Event: ' + info.event.title);
    alert('Coordinates: ' + info.jsEvent.pageX + ',' + info.jsEvent.pageY);
    alert('View: ' + info.view.type);

    // change the border color just for fun
    info.el.style.borderColor = 'red';
  }

});

info.jsEvent.pageX возвращает положение мыши.

Спасибо, ребята, за вашу помощь, я решил использовать модальный для этого.

благодарю вас


person tomas    schedule 26.03.2019    source источник
comment
почему ты хочешь знать? Если вы хотите узнать время начала/окончания события, просто посмотрите свойства события fullCalendar, а не события JS.   -  person ADyson    schedule 26.03.2019
comment
я хочу показать div рядом с элементом события   -  person tomas    schedule 26.03.2019
comment
Вы имеете в виду, как поповер? Для этого лучше использовать готовую библиотеку. Или, если вы действительно хотите сделать это самостоятельно, используйте CSS, чтобы расположить его относительно элемента события, что намного проще, чем пытаться разобраться с координатами.   -  person ADyson    schedule 26.03.2019
comment
после нажатия на событие я хочу показать div с возможностью удаления или редактирования события   -  person tomas    schedule 26.03.2019
comment
Да ты это уже говорил. И я уже предложил лучшие способы сделать это, чем использование координат. Какова твоя точка зрения?   -  person ADyson    schedule 26.03.2019


Ответы (2)


извините, я сначала не понял, что вы используете V4.

вы можете получить элемент календаря с помощью info.el
, чтобы получить смещения элемента, который вы могли бы использовать:
info.el.offsetLeft для координат x и info.el.offsetTop для координат y (относительно календаря)

person John    schedule 26.03.2019
comment
это работает, но левая позиция всегда равна 0. Я думаю, что она принимает позицию ‹td› - person tomas; 26.03.2019
comment
да, это связано с родительским элементом. если вам нужна точная позиция, я думаю, вам также нужно получить смещения всех родительских элементов, вот ссылка на вопрос, где объясняется, как это сделать: stackoverflow.com/questions/442404/ - person John; 26.03.2019

Согласно ответу Джона:

const
   bodyRect = document.body.getBoundingClientRect(),
   elemRect = info.el.getBoundingClientRect(),
   offsetLeft   = elemRect.left - bodyRect.left,
   offsetTop   = elemRect.top - bodyRect.top
;

Он отлично работает на V4.

person Antoine Bourlart    schedule 14.08.2019