【问题标题】:fullcalendar remove event by popup modal strange behaviorfullcalendar 通过弹出模式奇怪行为删除事件
【发布时间】:2022-01-17 17:40:32
【问题描述】:

我已将全日历事件移除弹出模式。 这部分工作,但有奇怪的行为。 我是新手,所以我尝试了几种不同的方法,但我无法消除这种奇怪的行为。 而且我不知道如何让 jsfiddle 在不复制我所有代码的情况下重现确切的行为。但我的代码包含很多额外的东西。所以我不能提供jsfiddle。这里只说明相关代码。但我认为有人对此有很好的经验。我认为他们可以很容易地看穿代码。我非常感谢您的建议。我在这上面花了太多时间。 奇怪的行为是通过弹出模式删除事件,它删除了之前通过关闭按钮关闭的另一个事件。在下面的解释中包含了细节。

我做了这样的:

1) 弹出模式的 div 代码

<div class="modal fade" id="modalRemove" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
      </div>
      <div class="modal-body">
       <h4>Are you sure to remove the event?</h4>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" id="close" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-danger" id="removeBtn" data-dismiss="modal">Remove</button>
      </div>
    </div>
  </div>
</div>

2) 当点击事件时 -> 弹出模式显示 -> 然后可以选择(点击)关闭按钮或删除弹出模式上的按钮

eventRender: function (event, element){  
    element.click(function() {
        $('#modalRemove').modal();
        $('#eventTitle').html(event.title);
        $("#removeBtn").click(function() {  
             $('#calendar').fullCalendar('removeEvents',event._id); 
        });
    });
},

什么是有效的

  1. 弹出模式正在工作
  2. 关闭按钮,删除按钮正在工作
  3. 在弹出模式上按下移除按钮时移除事件

什么是奇怪的行为

  1. 假设有两个事件:test1、test2 (image1)

  1. 我点击了test1事件,然后弹出模式出现(image2)

  1. 然后,我单击 test1 弹出窗口上的关闭按钮(未删除)-> 弹出窗口消失 -> test1 事件仍按原样显示在全日历上。 ====> 直到这里工作正常

  2. 然后,我点击 test2 事件-> 弹出模式出现如图 2 -> 按下 test2 的删除按钮 -> [问题]然后两个 test1、test2 事件都被删除了

为什么它会在 1、2、3、4 步后删除这两个事件?

【问题讨论】:

    标签: javascript jquery popup fullcalendar


    【解决方案1】:

    试试这个:

    eventRender: function(event, element) {
      element.attr('href', 'javascript:void(0);');
      element.click(function() {
        //set the modal values and open
        $('#eventTitle').html(event.title);
    
        // Rebind the Remove button click handler
        $("#removeBtn").off('click').on('click', function(e) {
            $('#calendar').fullCalendar('removeEvents', event._id);
        });
    
        $('#modalRemove').modal();
      });
    }
    

    请注意,在绑定特定事件之前,所有click 事件如何通过off()#removeBtn 按钮解除绑定。

    (在您的代码中,每次您单击日历中的一个事件时,该事件的新 click 处理程序都会绑定到 #removeBtn。因此,当您最终单击“删除”时,会执行多个处理程序。)

    【讨论】:

    • 感谢您的回答。您的回答确实有助于仅删除该事件。不删除先前单击和关闭的事件。 但是,它会导致一些额外的问题。 1) $('#calendar').modal(); 导致在其他 x-y 位置重新渲染整个日历。整个日历移动到页面的新位置。 2)// Rebind the Remove button click handler:这部分甚至使 eventResize 显示模态弹出窗口..它以前没有发生过。你知道为什么会出现这 2 个 exta 问题吗?
    • 修复了代码。有错误的 div id(来自我的 codepen,我在那里测试过)。再试一次。
    【解决方案2】:

    你可以这样做

    $(".popover").hide(); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-16
      • 1970-01-01
      • 2020-04-23
      • 1970-01-01
      • 2018-09-15
      相关资源
      最近更新 更多