请看下面的代码。
var $myInput = $('#myInput'); //select the <input> element
$myInput.on('focus', function(){
console.log('Input focused');
})
现在如果我在 IE 中执行以下两行:
$myInput.trigger('focus');
console.log('Done');
..输出将是:
Done
Input Focused
这是因为,在 IE 中,触发的事件是异步执行的。但在所有其他浏览器中情况恰恰相反。除了使用 triggerHandle()
或手动调用事件处理函数之外,还有其他解决方法吗?
最佳答案
没有。没有办法可靠地保证订单。解决方法是不要伪造事件。将 focus
事件中执行的逻辑放入其自己的函数中,然后直接调用它。
var $myInput = $('#myInput');
$myInput.on('focus', function() {
foo();
})
foo();
console.log('Done');
function foo() {
console.log('foo');
}
关于javascript - IE 中触发的事件是异步发生的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46725641/