一个大div里面包裹一个小div,里面的小div的点击事件不触发外面的这个大div的点击事件
2024-08-30 00:00:01
一开始上html代码
<div id="div1" style="background: blue;width: 100px; height: 100px;">
<div id="div2" style="background: red;width: 70px; height: 70px;">
</div>
</div>
就是这样的一段代码,
大的div==>div1
小的div==>div2
当代码是
$('#div1').click(function(e) {
alert('div1');
})
$('#div2').click(function(e) {
alert('div2');
})
正常这样写点击代码,当点击在div2上这个区域,会触发到div1的点击事件,就是会先弹出div2-->div1
但是我想要的效果只是想点击div2区域时,只弹出div2
那现在这里有两种方案,还有的请欢迎补充
第一种,因为是冒泡了,所以阻止冒泡
$('#div1').click(function(e) {
alert('div1');
})
$('#div2').click(function(e) {
e.stopPropagation()
alert('div2');
})
这样的话,点击div2区域只会弹出div2
点击div1只会弹出div1
第二种,因为div2覆盖在div1里面,所以不管你点击那个地方,都是触发了div1的区域,所以当点击的时候,判断这个区域是不是div2的区域,如果是的话,就触发div2,如果不是的话就触发div1
$('#div1').click(function(e){
// e.preventDefault();
if($(e.target).is('#div2')){
alert('div2')
}else{
alert('div1')
}
})
好了 我试过的就是这两种方案,欢迎大家指教补充
现在还有一种情况,就是如果是两个div外面还有一个a标签的话,想点击大的div的时候跳转链接,点击小的div的话还是执行其他操作的话
html结构代码如下
<a href='http://www.baidu.com'>
<div id="div1" style="background: blue;width: 100px; height: 100px;">
<div id="div2" style="background: red;width: 70px; height: 70px;">
</div>
</div>
</a>
现在的效果是想点击div2的时候执行一个事件,点击div1的时候跳转链接
这样的话可以有两种方案
第一种:阻止默认事件也就是a标签跳转
$('#div2').click(function(e) { alert('div2');
event.preventDefault();
})
第二种:return
$('#div2').click(function(e) { alert('div2');
return false;
})
最新文章
- H3 BPM:为石化企业提供一个不一样的全停大修平台
- ProtocolBuffers-3 For Objective C (1)-简单的使用
- 动手写一个Remoting接口测试工具(附源码下载)
- MySQL 字符串 转 int/double CAST与CONVERT 函数的用法
- Dokan虚拟磁盘开发实战
- unix文件系统
- 基于bootstrap的bootstrap-editable插件实现即时编辑功能
- xtrabackup备份原理
- IIS7下,显示PHP错误(不显示500错误,而显示详细错误)
- luogu1712 区间 (尺取法+线段树)
- 批量查询";_mget";
- android状态栏和NavigationBar的动态控制显示
- 第7课 列表初始化(2)_分析initializer_list<;T>;的实现
- [转]Tomcat的部署
- bootstrap在iframe框架中实现由子页面在顶级页面打开模态框(modal)
- ubuntu16.04 下 NVIDIA GTX1050ti 显卡驱动 PPA安装
- VC++ 6.0 C8051F340 USB 通信 CAN 数据解析
- mysql 运行 sql 脚本
- [Apio2012]dispatching 主席树做法
- android屏幕页面实现滚动,页面跳转