【问题标题】:Calendar toggles for FullCalendar not acting as expectedFullCalendar 的日历切换未按预期运行
【发布时间】:2012-04-26 17:59:12
【问题描述】:

我正在研究 Adam Shaw (http://arshaw.com/fullcalendar/) 的 FullCalendar 实现。

每个用户都有自己的个人日历,默认通过 JSON 加载:

    $('#calendar').fullCalendar({
        header: {
            left: false,
            center: 'title',
            right: false
        },
        editable: false,
        events: 'http://WEBSERVER.com/calendar/json/<?=$gid?>'
    });

(calendar/json/是一个PHP文件,可以从MySQL查询结果生成JSON)

不过,也有共享日历。可用的日历显示为按钮列表,如下所示:

    <div class="btn-group" id="cal-lists">
        <div class="btn btn-large" id="1">John's Personal Calendar</div>
        <div class="btn btn-large add-cal" id="2">Company Calendar</div>
        <div class="btn btn-large add-cal" id="3">Confrence Room Calendar</div>
    </div>

然后我有以下应该利用 FullCalendar addEventSource 方法的 jQuery。

    $("div.add-cal").click(function()
    {
        var json    = 'http://WEBSERVER.com/calendar/json/';
        var cal     = $(this).attr('id');
        var src     = json+cal;

        $('#calendar').fullCalendar( 'addEventSource', src);

        $(this).removeClass('add-cal');
        $(this).addClass('rem-cal');
    });

    $("div.rem-cal").click(function()
    {
        var json    = 'http://WEBSERVER.com/calendar/json/';
        var cal     = $(this).attr('id');
        var src     = json+cal;

        $('#calendar').fullCalendar( 'removeEventSource', src);

        $(this).removeClass('rem-cal');
        $(this).addClass('add-cal');
    });

所以每当用户点击时

    <div class="btn btn-large add-cal" id="2">Company Calendar</div>

$("div.add-cal").click(function() 应该被调用,它添加资源,然后将 CSS 类从“add-cal”更改为“rem-cal”。

然后,如果再次单击该按钮,则应调用 $("div.rem-cal").click(function()。情况并非如此。

单击公司日历会不断将公司日历事件添加到显示中。

第一次单击时,类会适当地更改为“rem-cal”,但之后不会更改。因此,如果用户单击它 3 次,则会显示三个事件实例。

我不太擅长 jQuery / JavaScript,因此非常感谢任何建议。

提前致谢。

【问题讨论】:

    标签: jquery fullcalendar


    【解决方案1】:

    发生这种情况是因为您将事件处理程序绑定到尚未匹配任何内容的选择器。

    您需要改用 jQuery 的 .on() 方法。

    例如

    $("div.btn-group")
        .on("click", "div.add-cal", function() {
            ...
        })
        .on("click", "div.rem-cal", function() {
            ...
        });
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    相关资源
    最近更新 更多