这是一个回归者,作为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
});
答案 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()所指的内容吗?