JQuery 三个关键事件 ajax + 语义 ui

JQuery three key events with ajax + semantic ui

希望有人能在这里帮助我:我正在开发一个时间记录网络服务。一个关键事件应 start/stop 一个 new/running 计时器。另一个用于删除记录并关闭语义 ui 模态。问题是,如果 ajax 调用没有被多次触发,我必须解除绑定 start/stop bcs 的关键事件。因为那个解除绑定我不能让两个(或三个)事件每次工作超过一次。我想不出其他选择...我在 jquery 中相对较新,我用 unbind() 和 one()

尝试过

为了更好的例子,我的代码片段(首先是 start/stop 键事件)然后是带有删除事件的语义模态。

//start new record by key(start numpad +, stop numpad - )

$(document).unbind('keydown', function(e){
    if($('button#saveButton').is(':hidden')){
        if (e.keyCode == 107) { // Numpad +
            var oRow = $('#buttonStartNew').parents('.recordRow');
            startRecord(oRow);
            return false;
        }else if(e.keyCode == 109){ // Numpad -
            var oRow = $('button.red').parents('tbody.recordRow');
            startRecord(oRow);
            return false;
        }
    }
});

//delete time record + popup

$('.removeButton').click(function(){
    var sRecordID = $(this).parents('.recordRow').find('.recordID').val();
    var clickedElement = $(this);

    if($('#modalAcceptButton').not(':hidden')){
        $(document).unbind('keydown', function(e){
            if(e.keyCode == 13) { // Enter
                deleteRecord(sRecordID, clickedElement)
                $('#myModal').modal('hide')
            }
        });
    }

    if($('button#saveButton').is(':hidden')){
        $('#myModal').modal({
            onDeny: function(){
                $(this).modal('hide');
            },
            onApprove: function(){
                deleteRecord(sRecordID, clickedElement);
            }
        }).modal('show')
    }else{
        clickedElement.parents('.recordRow').remove();
    }

});

多次触发的事件监听器通常发生在多次绑定时。例如,如果您使用 ajax 获取另一个也使用类似绑定命令的页面,就会发生这种情况。结果,这些事件侦听器堆栈导致多次执行。

在那种情况下,与其在每次调用它时都尝试通过解除绑定来解决这个问题,不如首先尝试通过调整绑定命令的位置来避免这个问题,使其只执行一次(如果有一种方法)。