fullcalendar 通过弹出模式奇怪行为删除事件
fullcalendar remove event by popup modal strange behavior
我已将全日历事件移除弹出模式。
这部分工作但有奇怪的行为。
我是新手,所以我尝试了几种不同的方法,但我无法消除这种奇怪的行为。
而且我不知道如何让 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">×</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);
});
});
},
什么有效
- 弹出模式正在工作
- 关闭按钮,删除按钮有效
- 在弹出模式中按下移除按钮时事件被移除
什么是奇怪的行为
- 假设有两个事件:test1、test2 (image1)
- 我点击了 test1 事件,然后弹出模式出现(图片 2)
然后,我在 test1 的弹出窗口上单击关闭按钮(不删除)-> 弹出窗口消失了 -> test1 事件仍然在 fullcalendar 上,因为它应该是。
====> 直到这里工作正常
然后,我点击 test2 事件 -> 弹出模式出现像图像 2 -> 按下测试 2 的删除按钮 -> [问题]然后 test1,test2 事件都被删除
为什么它会在 1、2、3、4 步后删除这两个事件?
试试这个:
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
。因此,当您最终单击 "Remove" 多个处理程序时被处决了。)
你可以这样做
$(".popover").hide();
我已将全日历事件移除弹出模式。 这部分工作但有奇怪的行为。 我是新手,所以我尝试了几种不同的方法,但我无法消除这种奇怪的行为。 而且我不知道如何让 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">×</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);
});
});
},
什么有效
- 弹出模式正在工作
- 关闭按钮,删除按钮有效
- 在弹出模式中按下移除按钮时事件被移除
什么是奇怪的行为
- 假设有两个事件:test1、test2 (image1)
- 我点击了 test1 事件,然后弹出模式出现(图片 2)
然后,我在 test1 的弹出窗口上单击关闭按钮(不删除)-> 弹出窗口消失了 -> test1 事件仍然在 fullcalendar 上,因为它应该是。 ====> 直到这里工作正常
然后,我点击 test2 事件 -> 弹出模式出现像图像 2 -> 按下测试 2 的删除按钮 -> [问题]然后 test1,test2 事件都被删除
为什么它会在 1、2、3、4 步后删除这两个事件?
试试这个:
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
。因此,当您最终单击 "Remove" 多个处理程序时被处决了。)
你可以这样做
$(".popover").hide();