javascript - js如何获取一个div以外的所有地方?

查看:91
本文介绍了javascript - js如何获取一个div以外的所有地方?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

<ul>
    <li></li>
    <div class="a" id="second-tag-div1">
        <div class="b"></b>
    </div>
</ul>

这里有个js,点击 li 元素,ul 增加 class,a 增加class,b增加class, 如何获取a以外的所有地方,这个好像阻止冒泡不合适,应该点击其他地方 remove掉增加的class。

// 关闭弹窗

$(document).mouseup(function(e){
    var _con = $('#second-tag-div1');   // 设置目标区域
          if(!_con.is(e.target) && _con.has(e.target).length === 0){ 
            $('.secondary-tag-container').removeClass('second-tag-div-active');
            $('.sidebar').removeClass('z-index100');
            $('.secondary-content').removeClass('display-block');
      };
});

其实这样已经达到了点击目标区域之外的地方关闭弹窗,只不过,因为点击li,然后对应增加class,当开启弹窗的时候,再点击li,完成了一次关闭弹窗又再次打开的操作,所以看上去点击当前对应li无效。

现在该怎么修改,它不是冲突,也不是错误,是运行了关闭操作,接着运行了打开操作。

解决方案

可以看一下类似的问题:
点击空白关闭弹窗的js写法推荐? https://segmentfault.com/q/1010000000452...

下面是我自己写的, 判断是否点击的不是目标元素或目标元素的后代元素

document.onmouseup = function(e){
    var e = e || window.event;
    var target = e.target || e.srcElement;
    var _tar = //获取你的目标元素
    //1. 点击事件的对象不是目标区域本身
    //2. 事件对象同时也不是目标区域的子元素
    if( !(target == _tar) && ! _tar.contains(target) ){
        //你的功能
    } else {
        //你的功能
    }
}

这篇关于javascript - js如何获取一个div以外的所有地方?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆