Вот пример, который может помочь.Вы вызвали селектор $('#main')
, но нет элемента с main
в качестве идентификатора.Переключение этого на Селектор Класса, кажется, помогает.Попробуйте использовать $('.main')
.
Пример фрагмента:
$(function() {
var JsonData = '[{"id":"1","title":"Event Title1","start":"2015-03-17T13:13:55.008","end":"2015-03-19T13:13:55.008"},{"id":"2","title":"Event Title 2","start":"2015-03-17T13:13:55-0400","end":"2015-03-19T13:13:55-0400"}]';
var obj = JSON.parse(JsonData);
var tmp = '';
$.each(obj, function(key, value) {
tmp += '<div class="col-md-4 col-sm-4">';
tmp += ' <div class="fc-event" data-color="#00cc99">';
tmp += ' <h5>' + value.title + '</h5>';
tmp += ' </div>';
tmp += ' </div>';
});
$('.main').prepend(tmp);
// initialize the external events
// -----------------------------------------------------------------
$('#external-events .fc-event').each(function() {
// store data so the calendar knows to render an event upon drop
$(this).data('event', {
title: $.trim($(this).text()), // use the element's text as the event title
stick: true // maintain when user navigates (see docs on the renderEvent method)
});
// make the event draggable using jQuery UI
$(this).draggable({
zIndex: 999,
revert: true, // will cause the event to go back to its
revertDuration: 0 // original position after the drag
});
});
// initialize the calendar
// -----------------------------------------------------------------
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
editable: true,
droppable: true, // this allows things to be dropped onto the calendar
drop: function() {
// is the "remove after drop" checkbox checked?
if ($('#drop-remove').is(':checked')) {
// if so, remove the element from the "Draggable Events" list
$(this).remove();
}
}
});
});
html,
body {
margin: 0;
padding: 0;
font-family: "Lucida Grande", Helvetica, Arial, Verdana, sans-serif;
font-size: 14px;
}
#external-events {
position: fixed;
z-index: 2;
top: 20px;
left: 20px;
width: 150px;
padding: 0 10px;
border: 1px solid #ccc;
background: #eee;
}
.demo-topbar+#external-events {
/* will get stripped out */
top: 60px;
}
#external-events .fc-event {
margin: 1em 0;
cursor: move;
}
#calendar-container {
position: relative;
z-index: 1;
margin-left: 200px;
}
#calendar {
max-width: 900px;
margin: 20px auto;
}
<link href='https://fullcalendar.io//releases/fullcalendar/3.9.0/fullcalendar.min.css' rel='stylesheet' />
<script src='https://fullcalendar.io/releases/fullcalendar/3.9.0/lib/moment.min.js'></script>
<script src='https://fullcalendar.io/releases/fullcalendar/3.9.0/lib/jquery.min.js'></script>
<script src='https://fullcalendar.io/releases/fullcalendar/3.9.0/fullcalendar.min.js'></script>
<script src='https://code.jquery.com/ui/1.11.3/jquery-ui.min.js'></script>
<div id='external-events'>
<p>
<strong>Draggable Events</strong>
</p>
<div class='main'>
</div>
<div class='fc-event'>My Event 1</div>
<div class='fc-event'>My Event 2</div>
<div class='fc-event'>My Event 3</div>
<div class='fc-event'>My Event 4</div>
<div class='fc-event'>My Event 5</div>
<p>
<input type='checkbox' id='drop-remove' />
<label for='drop-remove'>remove after drop</label>
</p>
</div>
<div id='calendar-container'>
<div id='calendar'></div>
</div>
</body>
</html>
Вы также можете видеть, что я переместил JavaScript в один блок.Это помогает обеспечить создание контента перед созданием календаря.Затем он ловит изменения и делает их перетаскиваемыми.