2017-10-12 3 views
1

Wie Trigger-Element-Ereignis synchron in 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">

Wenn Sie das obige Snippet in Chrome das heraus gesetzt laufen wird

one 
two 

Wenn Sie im Internet Explorer laufen die löschte ist

two 
one 

Wie machen es synchron in IE?

+0

Mit Funktionen in JavaScript können Sie nie sicher sein. Wann immer eine anonyme Funktion erstellt wird, wird sie auf einen Stapel geworfen, um ausgeführt zu werden, aber es gibt keine Möglichkeit zu wissen, wann genau dies geschehen wird. – Jerodev

+0

Azad, es funktioniert für Sie? –

Antwort

1

Die Lösung ist triggerHandler Methode zu verwenden.

.triggerHandler() gibt den Wert zurück, der vom letzten -Handler zurückgegeben wurde, für den er ausgeführt wurde. Wenn keine Handler ausgelöst sind, es kehrt undefined

console.log('two') wird nur dann ausgeführt, wenn der Fokus Veranstaltung ist abgeschlossen.

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

danke, es funktioniert wie erwartet. – azad