如何取消绑定jQuery keydown(shift键)?

时间:2014-06-18 13:58:39

标签: jquery

尝试构建一些代码以突出显示表格中的记录,方法是按住shift键开始选择,然后单击鼠标左键(如果你是右手)点击结束选择。

我已经使用了一个全局变量来停止mousedown事件中的选择,并且代码仅在按下shift键一次并立即释放时才有效。但是,如果按住shift键并在选择结束时释放,则会在再次单击鼠标按钮时产生副作用。 (即按下一个ok,按住引入副作用)

我有绑定代码(不确定这里的术语绑定是否正确)keydown事件,而不是如何在另一个事件中取消绑定/删除它 - mousedown。

var C_MARKER_INIT_VAL      = "_INIT_";
var C_MAIN_MOUSE_BUTTON    = 1;      // i.e. left button for the right handed person


$(document).keydown(function(e) {
  if (e.shiftKey) {
    gBeginMarker = $("*:focus").attr('id');
  }
});

我尝试在mousedown事件中将其删除,如下所示:

$(document).mousedown(function(event) {
  if (event.which===C_MAIN_MOUSE_BUTTON && gBeginMarker && gBeginMarker != C_MARKER_INIT_VAL) {
    var e = event || window.event;

            // do some stuff


            // Re-initialize global variable to prevent this code block from firing again
    gBeginMarker = C_MARKER_INIT_VAL;
  }
});

按一次按键和按住按键(比如几秒钟)有什么区别?

点击鼠标后,删除移除键事件的任何帮助

1 个答案:

答案 0 :(得分:1)

  1. 使用.onnamespace您的活动。即,$(document).on('keydown.toRemove', function(e){
  2. 使用$(document).off('keydown.toRemove');取消绑定活动。 (.off docs