2012-03-23 107 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