如何阻止这个 click 事件发生?

2017-04-01 17:50:04 +08:00
 param

stopPropagation()并不能阻止,因为它是 capture 而不是 bubble , capture 的顺序是先父后子、自上而下的。

2866 次点击
所在节点    JavaScript
14 条回复
jmyz0455
2017-04-01 20:09:25 +08:00
return false;
但是不建议总是把事件设置在捕获阶段触发,然后还不能移除监听器,思路再理清一下,看能不能有别的做法。
zhujinliang
2017-04-01 20:14:54 +08:00
做个 opacity 0.01 的东西罩在页面上面 XD
ferrum
2017-04-01 20:41:50 +08:00
不是很明白要什么样的效果,是希望点击后能 emit 个 open 事件,但这个 click 不在其子元素上触发吗?

至于 1L 说的 return false ,其实在 jQuery 里面才是等于 event.preventDefault() & event.stopPropagation(),但在原生的并没有什么作用。不过正常情况下真的极少会更改事件的捕获方式。

Anyway, CSS 有个 pointer-events: none;属性,可以阻止元素响应 click 事件,或许会有用。
param
2017-04-01 20:43:00 +08:00
@jmyz0455 不好意思,标题描述有误,应该是阻止 close 事件,而不是 click 事件
param
2017-04-01 20:43:33 +08:00
@ferrum 不好意思,标题描述有误,应该是阻止 close 事件,而不是 click 事件
lslqtz
2017-04-02 12:23:57 +08:00
@param 很好的问题,我找了找没找到方案。
网上说是 js 无法阻止页面关闭。
this.close;
function() { [native code] }

var close='a';
undefined

this.close();
VM30633:2 Uncaught TypeError: this.close is not a function(…)(anonymous function) @ VM30633:2InjectedScript._evaluateOn @ (program):878InjectedScript._evaluateAndWrap @ (program):811InjectedScript.evaluate @ (program):667

this.close;
"a"
param
2017-04-02 12:29:15 +08:00
@lslqtz 不是阻止页面关闭,是想阻止 close 函数执行
MinonHeart
2017-04-02 13:32:22 +08:00
在 close 函数内做判断
param
2017-04-02 13:34:55 +08:00
@MinonHeart close 函数不是我写的,在一个第三方库里面。最好不用改库,看来唯一的方法就是移除监听器了?
MinonHeart
2017-04-02 13:38:17 +08:00
@param 外面再包一层
param
2017-04-02 13:38:58 +08:00
@MinonHeart document 的外面? document 不是最外了吗?
MinonHeart
2017-04-02 13:42:00 +08:00
@param ((((;゚Д゚))))))) 你自己包一层作为 click 事件的函数
lslqtz
2017-04-02 17:11:00 +08:00
@param 你把 close 改了不就好了。。
param
2017-04-02 17:14:53 +08:00
@lslqtz 因为 close 是在第三方库里,所以最好不用改。但现在貌似没有好的方案了,只能移除监听器或者改库。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/352032

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX