jQuery插件会覆盖keypress事件

时间:2015-11-19 09:41:53

标签: javascript jquery html

我在我的网站中使用Jquery ImgAreaSelector插件。我使用jquery在我的网站上有一堆按键触发器。例如:

$(document).bind('keypress', 'S', function(){
   alert("You have pressed S key");
});

这些工作正常。但是,当我单击初始化imageAreaSelector的按钮时,只要在图像上拖动一个区域,就不再捕获我的按键事件。如果我按下' S'之后,它不会显示警报。有谁知道如何在插件中处理这个?

1 个答案:

答案 0 :(得分:1)

因此,基本上您使用的插件在您拖动图像上的区域时会完全删除keypress事件注册表。看看https://github.com/odyniec/imgareaselect/blob/master/jquery.imgareaselect.dev.js#L375

因此,您的自定义按键事件处理程序将被删除且不再有效。解决此问题的方法是更改​​库:-)或使用该库的onSelectEnd回调:

$('img#photo').imgAreaSelect({
    onSelectEnd: function (img, selection) {
        // When you are done with the selection
        registerKeypressAgain();
    }
});

现在,registerKeypressAgain()方法只不过是:

function registerKeypressAgain() {
    $(document).bind('keypress', 'S', function(){
       alert("You have pressed S key");
    });
}