2013-04-29 75 views
0

我已經閱讀了很多關於如何在幾秒鐘後以多種方式隱藏對話框的答案。然而,我不能用我的例子得到這個工作。幾秒鐘後自動隱藏對話框

我使用的是一個opencart插件,在購物車中添加產品後顯示一個DIV,但只在用戶點擊「繼續購物」時停留在那裏。我希望這個DIV在5秒後自動關閉。

我已經試過的setTimeout,延遲等,並沒有什麼作品...所以我不知道我做錯了:

的代碼是這樣的:

$('#cart-total').html(json['total']); 
$('<div id="slidecart-success">'+json["confirmation"]+'</div>'). 
    dialog({ 
     autoOpen : true, 
     modal: true, 
     width : 480, 
     resizable: false,     
     title : cart_title, 
     buttons: [{ 
      text: cart_checkout, 
      click: function() { location = 'index.php?route=checkout/simplecheckout'; } 
     },{ 
      text: pop_continue, 
      click: function() { $(this).dialog("close"); } 
     }],     
     dialogClass: "slidecart-success", 
     create:function(){ 
      $("#slidecart-success-confirm").bind("click", 
       function(){ 
        $('#slidecart-success').dialog('close'); 
       } 
      ); 
     }, 
     close: function(){ 
      $("#slidecart-success-confirm").unbind("click"); 
      $('#slidecart-success').remove(); 
     } 
    });   

有人可以幫我嗎?

編輯:

我與也嘗試沒有成功:

if (json['success']) { 

       $('#cart-total').html(json['total']); 
// Start edit by Best-Byte // 
       $('<div id="slidecart-success">'+json["confirmation"]+'</div>'). 
       dialog({ 
        autoOpen : true, 
        modal: true, 
        width : 480, 
        resizable: false, 
        title : cart_title, 
      buttons: [{ 

     text: cart_checkout, 
     click: function() { location = 'index.php?route=checkout/simplecheckout'; } 
     },{ 
     text: pop_continue, 
     click: function() { $(this).dialog("close"); } 
     } 
     ],      
        dialogClass: "slidecart-success", 
        create:function(){ 
         setTimeout(function(){ 
    $("#slidecart-success-confirm").click(); 
}, 5000); 
         $("#slidecart-success-confirm").live("click", 
          function(){ 
           $('#slidecart-success').dialog('close'); 
          } 
         ); 
        }, 

回答

0

我你不打算取消自動關閉試試這個代碼

var dialog = $("<div/>", { 
    id: "slidecart-success" 
    html: json.confirmation 
}).dialog({ 
    autoOpen : true, 
    modal: true, 
    width : 480, 
    resizable: false,     
    title : cart_title, 
    buttons: [{ 
     text: cart_checkout, 
     click: function() { location = "index.php?route=checkout/simplecheckout"; } 
    },{ 
     text: pop_continue, 
     click: function() { $(this).dialog("close"); } 
    }],     
    dialogClass: "slidecart-success", 
    open: function() { 
     setTimeout(function(){ 
      dialog.dialog("close"); 
     }, 5000); 
    }, 
    close: function() { 
     // its better to destroy dialog rather than remove node 
     dialog.destroy(); 
    } 
}); 

// you can move this to outer scope 
// and it will close any opened dialog 
$("#slidecart-success-confirm").on("click",function(){ 
    dialog && dialog.dialog("close"); 
}); 
+0

貌似是沒有做什麼用的:dialogClass:「slidecart不成功」, \t \t \t \t \t創建:函數( ){(「#slidecart-success-confirm」)。bind(「click」,function(){('#slidecart-success')。dialog('close'); })。delay(5000) )。單擊(); 。 }, \t \t \t \t \t接近:函數(){ \t \t \t \t \t \t $( 「#slidecart成功 - 確認」)解除綁定( 「點擊」);對? – MZBS 2013-04-29 04:26:08

+0

ups。對不起,這是開放回調的代碼,像這樣打開:function(){$(「#slidecart-success-confirm」)。delay(5000).click(); } – 2013-04-30 00:30:20

+0

甚至更​​簡單的打開:function(){$('#slidecart-success')。delay(5000)。對話框( '關閉'); dialogClass:} – 2013-04-30 00:32:14

0

這個什麼:

$('#cart-total').html(json['total']); 
$('<div id="slidecart-success">'+json["confirmation"]+'</div>'). 
    dialog({ /* ... */ }); 

setTimeout(function(){ 
    $("#slidecart-success-confirm").click(); 
}, 5000); 
同時採用

嘗試改變與live$("#slidecart-success-confirm")按鈕bind功能:

這只是調用了,5秒超時後確認鍵click事件......

編輯即setTimeout來自以上:

$("#slidecart-success-confirm").live("click", 
    function(){ 
     $('#slidecart-success').dialog('close'); 
    } 
); 

通過live函數,我們告訴新創建的元素(不是在DOM中構建的),並使用相應的選擇器也響應該事件(在我們的例子中爲click)。試試這個,如果它不工作,我想我的想法......

+0

隨着那也沒有做任何事情:S很奇怪... – MZBS 2013-04-30 03:25:18

+0

@MZBS檢查我的編輯... – shadyyx 2013-04-30 08:20:18

+0

謝謝@shadyxx仍然沒有...看到我的代碼在第一篇文章中編輯。 – MZBS 2013-05-14 12:57:26