【发布时间】:2013-04-06 03:41:41
【问题描述】:
我在点击打开的日历事件中添加了引导弹出框:
eventClick: (event, jsEvent, view) ->
if event.ajaxUrl?
elem = jQuery(@)
elem.popover('destroy')
jQuery.ajax({url: event.ajaxUrl})
.done (result) ->
elem.popover(
placement: 'top'
html: true
trigger: 'manual'
title: moment(event.start).format('dddd, DD. MMMM YYYY - HH:mm')
content: result
container: 'body')
elem.popover('show')
我的问题是,当我更改日历视图(例如更改月份或周/日布局)时,这些弹出框保持打开状态。由于弹出框绑定到日历中的 .fc-event divs/spans,我需要访问这些 DOM 元素才能运行 .popover('destroy')。
每当更改完整日历视图时,旧的 DOM 元素都会被新视图的元素替换,因此我必须在视图实际更改之前访问它们。不幸的是,只有事件加载回调(loading 发生在视图更改后)和 viewDisplay(相同,但您获得了新视图)。
为了确保我正确理解viewDisplay,我在日历中添加了一个小测试,它总是给我“0”(数据选择器来自jquery data selector)
viewDisplay: (view) ->
alert(jQuery('.fc-event:data(popover)').size())
有没有办法在每次更改视图时挂接到日历进程 - 但在视图实际更改之前?
编辑
现在我只是在将鼠标移到任何日历按钮上时销毁弹出框(因为绑定到 click 将在视图更改后执行),但此解决方案只是一种解决方法
jQuery('.fc-button').on 'mouseover', () ->
jQuery('.fc-event:data(popover)').popover('destroy')
【问题讨论】:
标签: fullcalendar