Могу ли я вызвать событиеClick снаружи календаря? - PullRequest
2 голосов
/ 23 июля 2010

Я создаю «сводный» список событий на странице рядом с календарем. Я хочу вызвать обработчик события EventClick, когда нажимаю на запись в сводке. Разметка для сводной записи:

 <dd id="E45">9:00am-10:00am</dd> 

где id - это идентификатор события fullCalendar.

Как я могу вызвать eventClick (на правильном событии), когда пользователь нажимает на dd?

EDIT:

Спасибо за ответ. Я не думаю, что я был достаточно ясно о том, что я пытаюсь сделать.

Я не хочу, чтобы экземпляр fullCalendar заранее знал, что его событие eventClick может быть вызвано событием вне его.

Если "summary" и "calendar" - это два отдельных элемента div, а экземпляр fullCalendar был создан в элементе div "calender", а объект резюме - в элементе "summary", то я хотел бы сделать что-то вроде это для запуска события клика по календарю (и передачи правильных аргументов) при нажатии на дд в сводке.

$ ("# summary dd"). Click ($ ("# calendar"). FullCalendar.trigger ("eventClick", ???????));

Этого не будет в полном коде Календаря.

Ответы [ 3 ]

1 голос
/ 15 июня 2012

Вместо запуска обработчика eventClick, я использовал метод updateEvent fullCalendar:

    var eventsToBeUpdated = [];

    var allEvents = $('#calendar').fullCalendar('clientEvents');
    var chosenEvents = $('#calendar').fullCalendar('clientEvents', eventId);

    // remove selected-event css from all events
    for (var ei in allEvents) {
        var e = allEvents[ei];

        var classIndex;
        if (classIndex = e.className.indexOf("selected-event") != -1) {

            e.className.splice(classIndex, 1);
            eventsToBeUpdated.push(e);
        }
    }

    if (chosenEvents.length > 0) {
        chosenEvents[0].className.push("selected-event")
        eventsToBeUpdated.push(chosenEvents[0]);
    }

    // update all events which have changed
    for (uei in eventsToBeUpdated) {
        var updatedEvent = eventsToBeUpdated[uei];

        $("#calendar").fullCalendar("updateEvent", updatedEvent);
    }
0 голосов
/ 06 августа 2010

попробуйте это:

$("#summary dd").click(function() {
    var eventId = $(this).attr('id');
    var events = $('#calendar').fullCalendar('clientEvents',eventId);
    if (events.length > 0) {
        $("#calendar").fullCalendar.trigger('eventClick', events[0]);
    }
});
0 голосов
/ 28 июля 2010

Хорошо, точно не знаю, что вы пытаетесь сделать.

Вы можете определить eventClick: в объявлении fullcalendar.Параметр calEvent включает идентификатор объекта события.Так что вы могли бы добавить новую функцию, а затем вызвать ту же функцию, передавая идентификатор из вашегочто соответствует событию клик?

        $('#calendar').fullCalendar({
            header: {
                left: 'prev, next today',
                center: 'title',
                right: 'month, basicWeek, basicDay'
            }
            eventClick: function(calEvent, jsEvent, view) {
                alert('Event: ' + calEvent.title);
                alert('Coordinates: ' + jsEvent.pageX + ',' + jsEvent.pageY);
                alert('View: ' + view.name);
                // change the border color just for fun
                $(this).css('border-color', 'red');

                eClick(calEvent.id);
            }
          });
    function eventClick(id) {
        alert('Event ID: ' + id);
        ' Your event click code would go here.
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...