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 获取另一个也使用类似绑定命令的页面,就会发生这种情况。结果,这些事件侦听器堆栈导致多次执行。
在那种情况下,与其在每次调用它时都尝试通过解除绑定来解决这个问题,不如首先尝试通过调整绑定命令的位置来避免这个问题,使其只执行一次(如果有一种方法)。
希望有人能在这里帮助我:我正在开发一个时间记录网络服务。一个关键事件应 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 获取另一个也使用类似绑定命令的页面,就会发生这种情况。结果,这些事件侦听器堆栈导致多次执行。
在那种情况下,与其在每次调用它时都尝试通过解除绑定来解决这个问题,不如首先尝试通过调整绑定命令的位置来避免这个问题,使其只执行一次(如果有一种方法)。