2012-03-23 174 views
2

所以我有這個代碼在AJAX請求之後在print_info()函數中調用; click()事件jquery

'print_info' : function(message,type) { 
     $('.load').hide(); 
     $('<div>'+message+'</div>').insertAfter('#loader').addClass('autoHideBox '+type).fadeIn("slow").delay(2000).fadeOut("slow", function() { $(this).remove(); }); 
    }, 

正如你可能會看到,在div消失在幾秒鐘之內的了,我的問題是,即使我添加以下代碼:

.click(function() { $(this).fadeOut("slow", function() { $(this).remove(); }); }) 

的DIV不會淡出/刪除在所有。你能清除這個嗎?因爲我對這件事有點困惑。

問候, Duluman艾迪


後來編輯:

我得到了它。對工作( 「點擊」,回調),但儘管如此,逐漸把它隱沒在回調中取出只是不會工作。因此,爲了讓它工作,所以你可以做任何你需要做的事情在on(「click」的回調中,只需在.on()之前添加,stop(true,true).on(「點擊」,回調);

'print_info' : function(message,type) { 
     $('.load').hide(); 
     $('<div>'+message+'</div>') 
      .insertAfter('#loader') 
      .addClass('autoHideBox '+type) 
      .fadeIn("slow") 
      .delay(2000) 
      .fadeOut("slow", function() { $(this).remove(); }) 
      .on('click', function() { 
       $(this).stop(true,true).fadeOut("slow", function() { $(this).remove(); }) 
      }); 
    }, 

回答

2

我認爲這個問題是.click只是附着到了頁面加載最初加載元素

既然你創建元素的權利的話,它不是。正確地附加到點擊事件,請嘗試使用.on('click', callback),因爲可以將其添加到頁面加載後動態創建的任何內容中。

http://api.jquery.com/on/

+0

簡單的回調,但爲了解決這個問題回調,只需插入.stop(真的, true)之前.on(「click」,回調),在第一篇文章中編輯,以便其他人也可以看到。 – Eduard 2012-03-23 15:21:50

0

您應該使用.live('click',用於動態添加內容的功能。

+0

.live不起作用,只是告訴你,使用.on(「click」,callback); – Eduard 2012-03-23 15:19:56

+0

.live不起作用,因爲它已被棄用,並且您可能正在使用最新版本的jquery – Kristian 2012-03-23 15:56:00

0

這個工作對我來說:不影響與DIV工作(「點擊」,回調)

$(document).ready(function() { 
    var div = $('<div>This is a test</div>'); 
    div.insertAfter('#test'); 
    div.click(function() { 
     div.fadeOut("slow", function() { div.remove(); }); 
    }); 
    }); 
+0

嘗試在點擊功能之前添加fadeIn/fadeOut,您會發現它不起作用。無論如何,你有「文件準備好的功能」,我們​​使用的是現場的div,它們並沒有與DOM同時加入。 – Eduard 2012-03-23 15:30:14