window.open('') 火狐,IE事件冒泡处理,点击事件冒泡处理

window.open('') 火狐,IE事件冒泡处理,点击事件冒泡处理

写PC下拉菜单的时候,hover样式显示下拉菜单,可能会这样写

 1  <li class="xb_li1" onclick="window.open('')">精英团队</li>
 2       <li class="xb_li1" onclick="window.open('')">720°全景</li>
 3       <li class="xb_li1" onclick="window.open('')">装修选材</li>
 4       <li class="xb_li1" onclick="window.open('')">装修攻略</li>
 5       <li class="xb_li1" onclick="window.open('')">关于我们
 6       <ul>
 7          <li onclick="window.open('')">公司简介</li>
 8          <li onclick="window.open('')">公司荣誉</li>
 9          <li onclick="window.open('')">公司历程</li>
10          <li onclick="window.open('')">发展历程</li>
11          <li onclick="window.open('')">联系我们</li>
12      </ul>
13 </li>

这样的话点击的时候会发生很尴尬的事情,谷歌点击很正常,但是火狐点击二级菜单的时会打开两个新页面,分别是当前点击的链接页面和父级的链接 ,分别打开“关于我们”和“公司简介”子元素的链接

那么如何阻止 click 事件冒泡到父元素:

这里需要做兼容处理,小编修改成了如下代码:

1 <li class="xb_li1" data-url="http://www.runoob.com">装修案例
2     <ul>
3         <li data-url="https://www.cnblogs.com">中央国际</li>
4         <li data-url="https://www.cnblogs.com">万科云岩大都会</li>
5         <li data-url="https://www.cnblogs.com">观府壹号</li>
6     </ul>
7 </li>

装修案列是父级元素,中国国际属于子元素,data-url  是自定义元素,用来存放链接的,然后js获取该链接

 1  //xb:codeBlockDescribe:菜单点击事件
 2     //给li添加点击事件
 3     $(".xbm_topBox .xb_menuBox li").click(function(event){
 4         //判断是否支持stopPropagation方式,ie不支持
 5         if (event && event.stopPropagation) {
 6             //W3C取消冒泡事件代码
 7             event.stopPropagation();
 8         } else {
 9             //IE取消冒泡事件支持代码
10             window.event.cancelBubble = true;
11         }
12         //xb:codeBlockDescribe:两个自定义属性,data-url地址
13         //$(this).attr("data-url") 获取当前点击元素的自定义属性值得
14         //window.open新窗口打开页面,第一个参数为地址
15             window.open($(this).attr("data-url"));
16     })    

小编亲测有效,感谢大家支持

 

posted @ 2018-06-27 17:08  熊一乐  阅读(480)  评论(0编辑  收藏  举报