2010-11-12 3 views

ответ

2

Что произойдет, если событие завернуто на две колонки? (т. е. потому, что он длится 10 дней)

Я ищу источник для FullCalendar, и я не думаю, что вы найдете то, что хотите - element - это абсолютно позиционированный div, а eventRender - вызываемый для каждого «сегмента» event, поэтому, если он обертывается, вы получаете два вызова eventRender.

В любом случае, если эти «gotchas» не отговаривают вас, вот трещина в том, чтобы понять это. Я использовал ширину/высоту строки по сравнению с элементом top, чтобы понять это, я не вижу более элегантного способа. Обратите внимание, что вы захотите изменить бит .fc-view-month на селектор, который начинается с вашего фактического идентификатора календаря.

eventAfterRender: function(event,element){ 
    var level = undefined; 
    var elTop = $(element).position().top; 
    $('.fc-view-month tr[class^="fc-week"]').each(function(){ 
     var rowTop = $(this).position().top; 
     var height = $(this).height(); 
     if (elTop >= rowTop && elTop < rowTop + height){ 
      level = $(this).attr('class').replace('fc-week',''); 
      return false; 
     } 
    }); 
    alert(level); 
} 

Это предупредит вас с «строки», как определено по календарю, то есть в первом ряду на самом деле «0»

EDIT: просто понял, что eventRender вызывается до того, элемент помещается в календаре, поэтому моя идея в значительной степени не сработает. Я изменил его на eventAfterRender. Я думаю, что если бы это было достаточно важно для вас, нужно было бы изменить FullCalendar так, чтобы всякий раз, когда он посылал вам «элемент» в функции eventRender, он также отправляет вам информацию о размещении (которую он имеет в структуре с именем segs в вызывающей функции).

Смежные вопросы