如何在IE中同步触发元素事件?

时间:2017-10-12 11:03:02

标签: javascript jquery events



$(function() {
  $('#btn').click(function() {
    $('#inp').focus();
    console.log('two');
  });
  $('#inp').focus(function() {
    console.log('one');
  });
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btn">
            Click
        </button>
<input type="text" id="inp">
&#13;
&#13;
&#13;

如果您在Chrome中运行上述代码段,那么输出将是

one
two

当你在IE中运行时,输出是

two
one

如何在IE中实现同步?

1 个答案:

答案 0 :(得分:1)

解决方案是使用triggerHandler方法。

  

.triggerHandler()返回最后一个返回的值   处理程序导致执行。如果没有重新触发处理程序,那么   返回undefined

console.log('two')仅在焦点事件结束时运行。

$(function() {
  $('#btn').click(function() {
    $('#inp').triggerHandler('focus');
    console.log('two');
   });
  $('#inp').focus(function() {
    console.log('one');
  });
});