当你点击(onclick)时,我有几个带动作的按钮,出现一个带有4个选项的菜单(比如右键点击任何软件):
<evento idevento="1000003" class="fc-day-grid-event fc-h-event fc-event
fc-start fc-draggable" draggable="true" ondragstart="drag(event)"
data-start="08-23-2017T11:00" data-room="3" data-guestname="guest name 3"
data-end="08-24-2017T12:00" onclick="mouseDown(event,1000003);">
<span class="fc-event eventoCalendario reserved">guest name 3</span></evento>
这个方法叫做onclick:
function mouseDown(e,id){
//e = e || window.event;
if(e.which === 1){
console.log(e);
$("#menu").css({'display':'block', 'left':e.pageX, 'top':e.pageY});
}
//controlamos los botones del menú
$("#menu").click(function(e){
// El switch utiliza los IDs de los <li> del menú
switch(e.target.id){
case "AddBooking":
$("#bookingModal").modal();
break;
case "CheckIn":
console.log('a');
//$("#bookingModalcheck").modal();
//checkinRoom(id);
break;
case "Move":
console.log('a');
$("#Move-dialog").modal();
$("#move-original-room").attr('value', id);
break;
case "Remove":
// Método cancelar
cancelRoom(id);
break;
}
});}
问题是,如果我用相同的方法多次点击其他按钮,然后访问菜单并按下其中一个选项,例如chekin,这会重复检查交换机的情况多次点击以前在其他任何按钮上做过。就像点击将被存储一样。
我很想知道为什么会这样。
添加预览视频: https://youtu.be/zDrWSkFKW04
答案 0 :(得分:1)
您正在注册click-listener mutliple次数,因此会多次调用它。尝试:
$("#menu").off('click').on('click', function(e){
// El switch utiliza los IDs de los <li> del menú
switch(e.target.id){
case "AddBooking":
$("#bookingModal").modal();
break;
case "CheckIn":
console.log('a');
//$("#bookingModalcheck").modal();
//checkinRoom(id);
break;
case "Move":
console.log('a');
$("#Move-dialog").modal();
$("#move-original-room").attr('value', id);
break;
case "Remove":
// Método cancelar
cancelRoom(id);
break;
}
});
.off('click')取消注册所有当前的点击处理程序,然后分配所需的。 祝你好运