Javascript / jquery无意循环,按钮onclick事件

时间:2017-08-23 09:11:17

标签: javascript jquery

当你点击(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

1 个答案:

答案 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')取消注册所有当前的点击处理程序,然后分配所需的。 祝你好运