2012-01-06 22 views
7

Estoy creando una aplicación web ...Jquery Retardo Después Haga clic

me dieron una especie de juego, mi idea es cuando el usuario completa aparece cada nivel un cuadro de diálogo con información, que está muy bien.

Ahora mi problema es que quiero mostrar este mensaje 5 segundos después de que el usuario haga clic en el botón de finalizar.

esa es mi código:

$('#option-main-menu').click(function(){ 
     target.append('\ 
      <div id="confirm">\ 
       <h1>Are You Sure Want to Exist?</h1>\ 
       <a href="#" id="dialog-confirm">Yes</a><a href="#" id="dialog-cancel">No</a>\ 
      </div>\ 
     '); 
    }); 

También He probado con append().Delay(10000) pero no funciona.

Gracias de antemano.

+14

Me gusta el mensaje "¿Seguro que quieres existir?" –

+0

@Tim, este es el juego Dr. Kevorkian. :) –

+0

lol mala ortografía! –

Respuesta

18

Utilice setTimeout() con un retraso de 5000 ms.

$("button").click(
 
    function() { 
 
     console.log("clicked...waiting..."); 
 

 
     setTimeout(
 
      function() { 
 
       alert("Called after delay."); 
 
      }, 
 
      5000); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<button type="button">Click Me</button>

Sólo por curiosidad, ¿por qué quieres que esperar 5 segundos antes de preguntar al usuario en respuesta a una acción? Eso es un largo tiempo; el tiempo suficiente para que hayan hecho clic en un montón de otras cosas (si nada más).

+1

Bueno, el tiempo es solo un ejemplo, probablemente será menos ... –

11

Puede intentar con setTimeout().

Example.

setTimeout(function(){ 
    // do stuff here, in your case, append text 
}, 5000); 

El 5000 puede ser reemplazado con cualquier valor de tiempo que determina la duración de la demora en milisegundos.

+1

incorrecto 'delay()' solo afecta esa cola de animación. – SLaks

+0

@SLaks: Buen punto - No me di cuenta. He editado mi respuesta y he añadido un ejemplo. – Purag

0
$yourThing.click(function(){ 
    setTimeout(function(){do your thing here},5000) 
}) 
+0

Necesita pasar una función, no llamarla: yourFunction, en lugar de yourFunction() –

+0

@pascalbetz sí, ese fue un pseudocódigo malo de mi parte. Fijo. ¡Gracias! –

1

No puede retrasar un apéndice. Solo puedes retrasar las animaciones. Se podría utilizar setTimeout o mostrar el elemento oculto inicialmente y luego se desvanecen en:

$('<div id="confirm" style="display:none"> ...') 
    .appendTo(target) 
    .delay(5000) 
    .fadeIn(1000); 
1

intento:

$('#option-main-menu').click(function(){ 
    setTimeout(
     function(){ 
     target.append('\ 
      <div id="confirm">\ 
       <h1>Are You Sure Want to Exist?</h1>\ 
       <a href="#" id="dialog-confirm">Yes</a><a href="#" id="dialog-cancel">No</a>\ 
      </div>\ 
     '); 
     } 
     , 5000); 
    }); 
0

$("button").click(
 
    function() { 
 
     console.log("clicked...waiting..."); 
 

 
     setTimeout(
 
      function() { 
 
       alert("Called after delay."); 
 
      }, 
 
      5000); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<button type="button">Click Me</button>

+2

No solo descargue código como respuesta. Explique esto para que pueda ayudar a los visitantes futuros. –

+1

Esto es bastante claro para una respuesta de "solo código", pero estoy de acuerdo con @SterlingArcher; necesita al menos algunos comentarios. –

0

Esto funcionará

$("button").click(
function() { 
    console.log("clicked...waiting..."); 

    setTimeout(
     function() { 
      alert("Called after delay."); 
     }, 
     5000); 
}); 
Cuestiones relacionadas