在IE8中,将事件对象传递给debounced函数。

问题描述 投票:3回答:1

我想在一个行的表格上弹出一个导致AJAX调用的keyup事件。我使用了所有的debouncing插件,包括Ben Alman的jQuery插件、Underscore.js的插件、jQuery的插件。delayed() 插件,以及Filatov Dmitry的一个扩展jQuery的插件(像Ben Alman的)。

我的代码是这样的。

function onKeyUp(evt) {
    doSomethingWith(evt, true);
}

$('#mytable').on('keyup', $.debounce(500, onKeyUp));

问题是,虽然它在Firefox和IE9上工作得很好,但在IE8上却不能工作。具体来说,当我在调用 evt.preventDefault() 的jQuery 1.11.1代码,并在4967行中断。e.returnValue = false; (因为 preventDefault() 显然在IE8中不存在)。) 用IE开发工具调试器检查事件变量,似乎该变量包含了所有的事件成员方法和属性,但大部分都被标记为 "未找到成员"。https:/stackoverflow.coma3533725134120。 但是没有用.上网搜索 "找不到IE成员",返回的结果很多,但解决的办法不多。

那么,有什么想法吗?

javascript jquery internet-explorer-8 dom-events
1个回答
2
投票

我需要先阻止默认处理程序(即不滚动),然后debounce我的事件处理程序。

然后使用这个。

var onKeyUp = $.debounce(500, doSomethingWith);

$('#mytable').on('keyup', function(evt) {
    evt.preventDefault(); // do always
    onKeyUp(evt, true); // possibly bounced call to doSomethingWith
});
© www.soinside.com 2019 - 2024. All rights reserved.