【问题标题】:jQuery fadeOut() and clicking issuejQuery fadeOut() 和点击问题
【发布时间】:2011-03-01 15:20:20
【问题描述】:

这是针对返回者的,作为 PHP 驱动的 CMS 的一部分。

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

每个 //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
});

【问题讨论】:

    标签: jquery click wait fadeout


    【解决方案1】:

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

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

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

    jsfiddle 上的示例。

    【讨论】:

    • 尝试用$(".hide").live("click", function(){});替换$(".hide").click
    【解决方案2】:
    if($(this).hasClass("admin")){}else{
    

    使用 ! $之前的

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

    这避免了不需要的 if/else。你能发布一些 HTML 来看看 parent() 指的是什么吗?

    【讨论】:

    • 谢谢,想知道是不是这样! &lt;div class='warning'&gt;&lt;strong&gt;Admin Message&lt;/strong&gt; $a_m&lt;/div&gt;
    • 如果那是您的 HTML,那么您可能不需要 .parent() 因为 .hide 将是您想要隐藏的元素......除非它被包裹在一个 div 中。尝试添加 console.log($(this).parent()); 并在 Firebug 的控制台选项卡中查看它的输出。
    • .hide 是实际的 X 按钮,.warning 中的一个 div
    猜你喜欢
    • 2013-11-28
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 2011-10-29
    相关资源
    最近更新 更多