2011-11-23 49 views
0

我已經編寫了我自己的ModalDialog函數,並且彈出窗口只能工作一次。這裏是我的ModalDialog函數:爲什麼jquery fadein只能工作一次?

function ModalDialog(button, text, fadeOut) { 
    $('.error-notification').remove(); 
    var x = "#" + button; 
    var $err = $('<div>').addClass('error-notification') 
       .html(text) 
       .css('left', $(x).position().left); 
    $(x).after($err); 
    $err.fadeIn('slow'); 
    if (fadeOut == true) { 
     setTimeout(function() { 
      $err.fadeOut() 
     }, 3000); 
    } 
    //$err.delay(0).fadeOut('slow'); 

} 

這裏是在主頁面加載的腳本文件中的代碼。

$(".error-notification").live('click', function() { 
    $(this).fadeOut('fast', function() { $(this).remove(); }); 
}); 

這是我如何調用該函數。

ModalDialog('testingAjax', 'h', false); 

我知道ModalDialog函數被調用每一次,因爲我在最後使用的函數內的console.log。那爲什麼它只顯示彈出一次而不是第二/第三/第四次等等......?

回答

2

您要刪除以前存在的所有彈出窗口:

$('.error-notification').remove(); 

它實際上是向他們展示,而是隻保留最後一個。 這是一個相關的小提琴:http://jsfiddle.net/BhU6F/3/

+0

確實,它工作得很好。 [這裏是](http://jsfiddle.net/BhU6F/4/)更新小提琴證明它顯示正確的文本。 –

+0

@Shadow Wizard這正是我想要做的:只顯示最後一個。基本上,ModalDialog函數被稱爲onclick按鈕。所以,想象一下:點擊按鈕 - >彈出。點擊彈出 - >彈出消失。現在,當用戶再次點擊該按鈕時,它應該再次彈出,而不是。 – TPR

+0

是的,它確實有效。在[我更新的小提琴](http://jsfiddle.net/BhU6F/4/)中點擊按鈕 - 「你好」出現。點擊「你好」就會消失。再次單擊該按鈕,將出現新的「hello」。 –

相關問題