Szy*_*Rut 5 jquery fullcalendar
我需要在dblclick上工作的实现函数,就像dayClick回调一样.我尝试了所有的解决方案,但我没有找到任何解决方案,例如米歇尔的答案.顺便说一下,所有线程都很老了.
问题似乎微不足道,但我没有想法为什么它不起作用.
有谁知道在最新版本中应该怎么做?
UPDATE
好的,我发现问题:)当我设置此选项时它停止工作: selectable: true
我添加了这个:
dayRender: (date, element, view) ->
element.bind "dblclick", ->
alert "double click!"
dayClick: (date, jsEvent, view) ->
$(".fc-highlight").removeClass("fc-highlight")
$(jsEvent.toElement).addClass("fc-highlight")
Run Code Online (Sandbox Code Playgroud)
并且完美地工作:)
谢谢你的帮助.
更新2
但是,上述解决方案并不完美.有些元素涵盖了日期对象,并且它不适用于整个表面,所以我提出了另一个解决方案:
findClickedDay = (e) ->
days = $("#calendar .fc-day")
i = 0
while i < days.length
day = $(days[i])
mouseX = e.pageX
mouseY = e.pageY
offset = day.offset()
width = day.width()
height = day.height()
if mouseX > offset.left and mouseX < offset.left + width and mouseY > offset.top and mouseY < offset.top + height
return day
i++
eventAfterAllRender: (view) =>
$("#calendar").bind "dblclick", (e) =>
clickedDay = findClickedDay(e);
if clickedDay.length == 0 then return
date = new Date(clickedDay.data('date'))
alert "dblclick on date: #{date}"
Run Code Online (Sandbox Code Playgroud)
val*_*lis 12
它适用于fullcalendar V1.x
Click for jsfiddle链接.
在eventRender
同时被渲染事件触发.&& eventRender
是用于修改日期单元格的钩子.单击dayRender文档
eventRender: function(event, element) {
element.bind('dblclick', function() {
alert('double click!');
});
},
Run Code Online (Sandbox Code Playgroud)
我认为这是一个常见的问题,通常需要一些黑客攻击.@Valar Morghulas的事件渲染解决方案非常适合捕捉事件doubleclicks.对于日历的其余部分,也许这有点清洁.
(你基本上记得使用dateClick回调一次单击的日期,并在鼠标移动后忘记它)
$('#calendar').fullCalendar({
...
dayClick: dayClickCallback,
eventRender: eventRenderCallback,
...
});
var slotDate;
function dayClickCallback(date){
slotDate = date;
$("#calendar").on("mousemove", forgetSlot);
}
function eventRenderCallback(event,element){
element.on("dblclick",function(){
dblClickFunction(event.start)
});
}
function forgetSlot(){
slotDate = null;
$("#calendar").off("mousemove", forgetSlot);
}
function dblClickFunction(date){
alert(date);
}
$("#calendar").dblclick(function() {
if(slotDate){
dblClickFunction(slotDate);
}
});
Run Code Online (Sandbox Code Playgroud)