返回信息流<div id='div1'>
<div id='div11'>
</div>
<div id='div12'>
</div>
</div>
<div id='div2'>
</div>
我想选中所有的div除div11以外的div去相应点击事件。$('div:not("#div11")').click();为什么点击div11也会相应点击事件。
原因是:点击该处的时候同时也是点击div1 所以正确的写法是$('div:not("#div11"):not("#div1")').click(); 不知道解释的对不对
这是一条镜像帖。来源:北邮人论坛 / www-technology / #28852同步于 2015/1/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖
:not()问题.
woyczycz
2015/1/3镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
不对,这样你的div1彻底不能触发事件了即使你点的是div1的其他区域
不知道为什么你要给所有div加事件绑定这么奇怪的需求
一定要的话可以绑一个div,然后单独绑#div11,阻止冒泡之后返回
只要在div11的任何祖先节点上绑定click事件的handler,都会响应div11的点击
所以你可以在div1和div2最近的公共祖先节点上面绑定click事件的handler,然后再在handler中判断e.target || e.srcElement是不是你要排除的div,比如div11,原理就是DOM事件的冒泡机制
【 在 woyczycz 的大作中提到: 】
: <div id='div1'>
: <div id='div11'>
: </div>
: ...................
我点击div12是可以反应的,我做的是首先点击一个div中的按钮,显示隐藏的div11,然后点击body的其他地方,隐藏div11(大意是这样的)
【 在 rhj1122 的大作中提到: 】
: 不对,这样你的div1彻底不能触发事件了即使你点的是div1的其他区域
: 不知道为什么你要给所有div加事件绑定这么奇怪的需求
: 一定要的话可以绑一个div,然后单独绑#div11,阻止冒泡之后返回
好办法
【 在 spaceman 的大作中提到: 】
: 只要在div11的任何祖先节点上绑定click事件的handler,都会响应div11的点击
: 所以你可以在div1和div2最近的公共祖先节点上面绑定click事件的handler,然后再在handler中判断e.target || e.srcElement是不是你要排除的div,比如div11,原理就是DOM事件的冒泡机制
ele.addEventListener('click', handle, false);
function handle (e) {
var target = e.target;
while (target.id !== 'div11') {
// Do stuff here
}
}
恩
【 在 kxj 的大作中提到: 】
: ele.addEventListener('click', handle, false);
: function handle (e) {
: var target = e.target;
: ...................