【问题标题】:jQuery - fade out when clicking on parent element (and not the parents children)?jQuery - 单击父元素(而不是父元素)时淡出?
【发布时间】:2010-05-04 13:01:38
【问题描述】:

我的页面上有以下代码,我想要做的是当用户在#loginBox 之外单击时,我希望整个#loginOverlay 淡出。但是如果没有通过单击#loginBox 触发淡出,我无法实现此效果...

它位于页面底部,我在页面上有一个链接可以触发淡入淡出。但是现在淡出有点挣扎。

我试过这样做:

$("#loginOverlay").click(function() { ...fadeout... });

但它给了我相同的结果。

所以有什么建议吗?提前致谢!

<div id="loginOverlay">
    <div id="loginBox">
        <img class="closeBtn" src="images/icons/close.png" alt="" />
        <h3>Login</h3>
        <form action="login.php?ref=index.php" method="post">
            <input type="text" name="username" value="Username..." onblur="if(this.value.length == 0) this.value='Username...';" onclick="if(this.value == 'Username...') this.value='';" />
            <input type="password" name="password" value="Password..." onblur="if(this.value.length == 0) this.value='Password...';" onclick="if(this.value == 'Password...') this.value='';" />
            <input class="loginBtn" type="submit" name="submit" value="Login!" />
        </form>
    </div> <!--login box -->
</div>



<script src="js/jquery-1.4.2.min.js"></script>
<script>
$(document).ready(function() {
    $('#loginOverlay').css('display', 'none');

    $('#loginToggle').click(function() {
        $("#loginOverlay").fadeIn(200);
    });

    $("#loginBox").parent().click(function(){
        $("#loginOverlay").fadeOut(100);
    });

});

【问题讨论】:

    标签: jquery click parent children fadeout


    【解决方案1】:

    您需要检查e.target 以查看实际点击了哪个元素:

    $("#loginOverlay").click(function(e) {
        if (e.target === this)
            $("#loginOverlay").fadeOut(100);
    });
    

    【讨论】:

    • 似乎不起作用。 if 周围不应该有 {} 吗?无论如何,这不会改变它,仍然无法正常工作。 ://
    • 改成if ($(e.target).is('#loginOverlay'))
    • function() 更改为function(e)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    • 2021-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-27
    相关资源
    最近更新 更多