2012-01-06 39 views
7

tôi là tạo ra một ứng dụng web ...Jquery trì hoãn sau khi Bấm

tôi đã nhận một loại trò chơi, ý tưởng của tôi là khi người dùng hoàn mỗi cấp xuất hiện một hộp thoại với một số thông tin, nó là tốt.

Bây giờ vấn đề của tôi là tôi muốn hiển thị thông báo này 5 giây sau khi người dùng nhấp vào nút kết thúc.

thats mã của tôi:

$('#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>\ 
     '); 
    }); 

cũng i tryed với append().Delay(10000) nhưng không hoạt động.

Xin cảm ơn trước.

+14

Tôi thích thông báo "Bạn có chắc chắn muốn tồn tại không?" –

+0

@Tim, đây là trò chơi Dr. Kevorkian. :) –

+0

lol chính tả xấu! –

Trả lời

18

Sử dụng setTimeout() với thời gian trễ là 5000 mili giây.

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

Chỉ cần ra khỏi tò mò, tại sao bạn sẽ muốn chờ 5 giây trước khi nhắc người sử dụng để đáp ứng với một hành động? Đó là một thời gian dài; đủ lâu để họ đã nhấp vào một loạt các thứ khác (nếu không có gì khác).

+1

Vâng thời gian chỉ là một ví dụ có thể sẽ ít hơn ... –

11

Bạn có thể thử sử dụng setTimeout().

Example.

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

5000 có thể được thay thế bằng bất kỳ giá trị thời gian nào xác định độ dài trễ trong mili giây.

+1

Sai. 'delay()' chỉ ảnh hưởng đến hàng đợi hoạt ảnh đó. – SLaks

+0

@SLaks: Điểm tốt - Tôi không nhận ra điều đó. Tôi đã chỉnh sửa câu trả lời của mình và thêm một ví dụ. – Purag

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

Bạn cần phải vượt qua một chức năng, không gọi nó: yourFunction, thay vì yourFunction() –

+0

@pascalbetz vâng, đó là giả giả trên phần của tôi. Đã sửa. Cảm ơn! –

1

Bạn không thể trì hoãn phụ thêm. Bạn chỉ có thể trì hoãn hoạt ảnh. Bạn có thể sử dụng setTimeout hoặc hiển thị các phần tử ban đầu ẩn và sau đó dần giảm âm trong:

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

thử:

$('#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

Xin vui lòng không chỉ đổ mã như một câu trả lời. Giải thích điều này để nó giúp khách truy cập trong tương lai. –

+1

Điều này khá rõ ràng đối với câu trả lời "chỉ mã", nhưng tôi đồng ý với @SterlingArcher; nó cần ít nhất một số bình luận. –

0

này sẽ làm việc

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

    setTimeout(
     function() { 
      alert("Called after delay."); 
     }, 
     5000); 
}); 
Các vấn đề liên quan