首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript/jquery无意中循环,按钮onclick事件

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

Stack Overflow用户
提问于 2017-08-23 17:11:17
回答 1查看 45关注 0票数 1

我有几个按钮,当你点击(onclick)时,会出现一个有4个选项的菜单(就像右键单击任何软件一样):

代码语言:javascript
复制
<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的方法:

代码语言:javascript
复制
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;
    }
});}

问题是,如果我用同样的方法在其他按钮上单击了几次,然后访问菜单并按下其中一个选项,例如checkin,这将重复开关的大小写签入操作,次数与之前在其他按钮上的任何地方单击的次数一样多。这就好像点击会被存储起来一样。

我很好奇为什么会发生这种情况。

添加预览视频:https://youtu.be/zDrWSkFKW04

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-23 17:17:22

您要多次注册click-listener,因此会多次调用它。尝试:

代码语言:javascript
复制
$("#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')注销所有当前的点击处理程序,然后分配需要的。祝好运

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45835399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档