【问题标题】:fullcalendar function on load加载时的全日历功能
【发布时间】:2019-03-01 23:26:19
【问题描述】:

使用议程视图,我的屏幕上会显示 7 天,并且我有按钮可以浏览该月(即转到下一天)。我有一个功能,可以让我点击我点击的时间段的开始和结束。它在 7 天内运行良好,但仅在加载的页面上运行,但如果我单击转到第二天并单击时间段,它就不再起作用了。我检查了 html 结构,它仍然相同,但我的功能不起作用。

这是我的代码:

$("div.fc-slats table tbody tr").click(function () {
                var borne_sup = $(this).attr("data-time");
                var borne_inf = $(this).next().attr("data-time");
                console.log(borne_sup);
                console.log(borne_inf);
            });

你能帮帮我吗?

【问题讨论】:

    标签: jquery fullcalendar


    【解决方案1】:

    如果您仅在首次呈现日历时添加点击事件,则它将在该点附加到每一行。当您单击下一个新元素时,将添加到 DOM 中,因此如果您不再次运行代码,这些元素将不会附加单击事件。

    修复应该可以解决问题,但是另一种方法是使用 FullCalendar 回调eventClick,这使您可以访问您点击的事件,而您不必手动附加点击处理程序。

    eventClick(event, jsEvent, view) {
      console.log(event.start, event.end);
    }
    

    Example Codepen

    【讨论】:

    • 感谢您的回复,所以我应该使用 $(document).change 吗?
    • 最好的办法是在初始化日历时使用提供的点击事件回调。你有什么不想使用它的理由吗?更改用于输入、文本区域或选择元素。 stackoverflow.com/a/12495240/3891834
    【解决方案2】:

    我是网络开发的新手,所以我不知道该怎么做,但我找到了另一种方法:

    $("body").on("click", "div.fc-slats table tbody tr", function () {
                    borne_sup = $(this).attr("data-time");
                    borne_inf = $(this).next().attr("data-time");
                    console.log(borne_sup);
                    console.log(borne_inf);
    
                });
    

    感谢您的帮助。

    【讨论】:

    • 不知道该怎么办?如果您正在谈论使用 eventClick 回调,那么在我创建的 CodePen 示例中就有使用该回调的演示。
    • 很抱歉,我没有看到您给我发送了 codepen 示例。
    • 没关系,我仍然建议检查一下。很多库都提供这样的回调函数,让您可以连接到库中。它使您无需尝试将事件附加到随机 DOM 元素,并且在重新渲染它们时必须确保重新附加事件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    相关资源
    最近更新 更多