我想在导致AJAX调用的行表上去掉一个keyup事件。我已经使用了所有的debouncing插件,包括Ben Alman的jQuery,来自Underscore.js的jQuery,一个jQuery delayed()插件,以及来自Filatov Dmitry的一个插件,它扩展了jQuery(就像Ben Alman的一样)。 / p>
我的代码如下所示:
function onKeyUp(evt) {
doSomethingWith(evt, true);
}
$('#mytable').on('keyup', $.debounce(500, onKeyUp));
问题是,虽然它在Firefox和IE9上运行良好,但它在IE8中不起作用。具体来说,当我调用evt.preventDefault()
进入jQuery 1.11.1代码并在e.returnValue = false;
上的第4967行中断时,IE8会抛出一个“未找到成员”错误(因为preventDefault()显然不存在于IE8)。在使用IE开发人员工具调试器检查事件变量时,似乎变量包含所有事件成员方法和属性,但大多数都标记为“未找到成员”。
我已经尝试过这个解决方案https://stackoverflow.com/a/3533725/134120,但它没有用。
谷歌搜索“未找到IE成员”返回了很多结果,但解决方案不多。
那么,有什么想法吗?
答案 0 :(得分:2)
我需要先阻止默认处理程序(即不滚动),然后去抖动我的事件处理程序。
然后使用:
var onKeyUp = $.debounce(500, doSomethingWith);
$('#mytable').on('keyup', function(evt) {
evt.preventDefault(); // do always
onKeyUp(evt, true); // possibly bounced call to doSomethingWith
});