сделать что-то до того, как появится диалоговое окно подтверждения - PullRequest
0 голосов
/ 24 ноября 2018

$('.lorem').on('click', function(){
    $(this).hide();
    if(prompt('DO SOMETHING') != null) {console.log('something');}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='lorem'>lorem</div>

Поэтому я сначала хочу скрыть div, а затем всплывающее диалоговое окно подтверждения.Возможно ли это?

Ответы [ 2 ]

0 голосов
/ 25 ноября 2018

Используйте кадры анимации для запуска кода перед следующей рисованием.

window.requestAnimationFrame ()

$('.lorem').on('click', function(){
    // The browser will paint async not sync, so the div may still be visible
    // even after this line
    $(this).hide();
    // when the browser is ready to paint the div off screen the callback will fire
    window.requestAnimationFrame(() => { 
        if (prompt('DO SOMETHING') != null) {
            console.log('something');
        }
    });
});

примечание: возможно, вам придется делать вложенные кадры анимациитак как браузеры стремятся реализовать запрос анимации фрейма по-разному.

requestAnimationFrame(() => requestAnimationFrame(() => {
    ...
})); 
0 голосов
/ 25 ноября 2018

Вы можете использовать setTimeout:

 document.querySelector('.lorem').addEventListener('click',  () => {
  document.querySelector('.lorem').style.display = "none";
   setTimeout(() => {
     if(prompt("do something") !== null) {
       console.log('do something')
     }
   }, 100)
  })
...