2017-10-12 68 views
1

如何在IE中同步觸發元素事件?

$(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">

如果運行在Chrome上面的代碼片段的出認沽將

one 
two 

當您在IE中運行出來的說就是

two 
one 

如何使它在IE中同步?

+0

您永遠無法確定JavaScript中的函數。每當一個匿名函數被創建時,它就會被拋到一個堆棧上被執行,但是沒有辦法知道什麼時候會發生這種情況。 – Jerodev

+0

azad,它適合你嗎? –

回答

1

解決方法是使用triggerHandler方法。任何值是由最後 處理器返回

.triggerHandler()返回時,就造成執行。如果沒有處理程序重新觸發,它 返回undefined

console.log('two')時完成焦點事件纔會運行。

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

如預期的那樣感謝您的作品。 – azad

相關問題