fullcalendar.js - 在按钮单击时删除事件

gui*_*ima 15 javascript jquery json fullcalendar

我正在使用fullCalendar.js,目前的问题是让我失去了太多的时间在一些可能比我理解的javascript(更具体的jquery)更简单的东西上.

我的例子的链接在底部,但我主要担心的是这部分:

eventClick: function(event){
  $(".closon").click(function() {
     $('#calendar').fullCalendar('removeEvents',event._id);
  });
},    
Run Code Online (Sandbox Code Playgroud)

我想通过关闭按钮从日历中删除事件,而不是直接点击事件.我已经尝试使用$element.clickeventClick触发器的外部,但它关闭了日历上的所有事件,并且我可以达到的最大值是这种糟糕的情况,用户需要先点击日历事件并在'X'后删除它.

http://jsfiddle.net/59RCB/49/

Cod*_*die 40

删除eventClick函数并将eventAfterAllRender函数替换为:

        eventRender: function(event, element) {
            element.append( "<span class='closeon'>X</span>" );
            element.find(".closeon").click(function() {
               $('#calendar').fullCalendar('removeEvents',event._id);
            });
        }
Run Code Online (Sandbox Code Playgroud)

  • 这样可行,但是如果您仍然需要eventClick处理程序来编辑现有事件,请将一个参数e添加到closeon click处理程序并在其中调用e.stopPropagation(). (3认同)
  • @nextdoordoc将按钮追加到内容div中:`element.find('。fc-content')。append();` (2认同)
  • @Whitecat也刚登陆。我提供了解决方案。为了使其与最新的fullCalendar一起使用,应将跨度作为.fc-content`element.find('。fc-content')。append(“ &lt;span class ='closeon'&gt; X &lt;/ span&gt; “);` (2认同)

San*_*ndy 11

以上解决方案在月视图上完美运行,但如果您使用的是周视图和日视图,则此解决方案将无法正常工作,如上面的nextdoordoc所指出的那样.为什么?在周视图中,它们是div元素,".fc-bg"作为css类,它覆盖了25%不透明度,阻止了点击事件.

Workarround:

eventRender: function(event, element) { 
       element.find(".fc-bg").css("pointer-events","none");
       element.append("<div style='position:absolute;bottom:0px;right:0px' ><button type='button' id='btnDeleteEvent' class='btn btn-block btn-primary btn-flat'>X</button></div>" );
       element.find("#btnDeleteEvent").click(function(){
            $('#calendar').fullCalendar('removeEvents',event._id);
       });
Run Code Online (Sandbox Code Playgroud)

添加pointer-events:none允许单击事件传播.注意:此解决方案在IE10及更早版本中不起作用.

要在IE10中工作,您可以直接将删除按钮添加到 (".fc-bg")

这是一个例子:

eventRender: function(event, element) { 
   element.find(".fc-bg").append("<div style='position:absolute;bottom:0px;right:0px' ><button type='button' id='btnDeleteEvent' class='btn btn-block btn-primary btn-flat'>X</button></div>" );}
Run Code Online (Sandbox Code Playgroud)

希望能帮助别人