jQuery fadeOut()和点击问题

时间:2011-03-01 15:20:21

标签: jquery click wait fadeout

这是一个回归者,作为PHP驱动的CMS的一部分。

我们希望返回者(如果有类 admin )添加div hide ,这是一个小X按钮。返回者应该在4秒后自动fadeOut(),或者如果用户点击 hide 按钮则自动fadeOut()。

每个// HERE代码都可以自行运行,但是它们只会运行延迟的fadeOut()和而不是点击的代码!

任何帮助都会很棒。谢谢,尼克。

$(".success, .info, .warning, .error").each(function(){
    if(!$(this).hasClass("admin")){
        $(this).append('<div class="hide"></div>');
        $(this).delay(4000).fadeOut(); // HERE
    }
});
$(".hide").click(function(){
    $(this).parent().fadeOut(); // HERE
});

2 个答案:

答案 0 :(得分:1)

由于.hide是动态附加的,因此您需要使用.live()(或delegate)才能使点击处理程序正常运行。

由于您使用delay()尝试在父级上调用.stop()来清除延迟以运行淡出动画。

$(".hide").live('click', function(){
    $(this).parent().stop().fadeOut(); // HERE
});

jsfiddle上的示例。

答案 1 :(得分:0)

if($(this).hasClass("admin")){}else{

这条线可以更清洁使用!在$

之前
if ( !$(this).hasClass("admin") ) {

这避免了不需要的if / else。您可以发布一些HTML来查看parent()所指的内容吗?