【问题标题】:jquery click anything but div and childrenjquery 单击除 div 和子项之外的任何内容
【发布时间】:2013-07-27 14:08:02
【问题描述】:

我有一个登录窗口,我试图通过单击 div 以外的任何位置来淡出(以及切换淡入和淡出的登录按钮)

 jQuery(document).ready(function ($) {
    $('.login').click(function () {
        $('#modal_login').fadeToggle('fast');
    });

    $('body').click(function (e) {
        if (!$(e.target).is('.login, #modal_login *')) {
            $('#modal_login').fadeOut('fast');
        }
    });
});

这一切看起来都很简单,但我的问题是#modal_login 和它的孩子。如果您单击#modal_login div 中的任意位置,它会淡出。我也试过#modal_login > *,但没有成功。

代码运行良好,带有“.login”类按钮。

所以我的问题是,我什至使用正确的语法来完成我想要完成的事情(当点击或点击它的任何孩子时不会让 div 淡出)?看起来合法吗?

【问题讨论】:

标签: jquery


【解决方案1】:

解决此问题的一种方法是防止模态框内的点击冒泡超出模态框。像这样的:

$("#modal_login").click(function(e){
    e.stopPropagation();
});

现在模态中的点击不会冒泡到执行fadeOut的外部处理程序。

【讨论】:

  • 然而,这解决了问题,破坏了模式窗口中的功能,它对丢失的密码字段具有类似的淡入淡出效果。我最终采用了不同的方式,而不是针对“主体”,我针对了几个主要的结构 div,并实现了我试图实现的相同效果。
猜你喜欢
  • 2014-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-31
  • 1970-01-01
相关资源
最近更新 更多