推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
param

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

  •  
  •   param · Apr 1, 2017 · 3441 views
    This topic created in 3343 days ago, the information mentioned may be changed or developed.

    screenshot

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

    Supplement 1  ·  Apr 1, 2017
    除了 remove 掉这个 listener
    Supplement 2  ·  Apr 1, 2017
    Sorry
    标题描述有误,应该式阻止 close 事件,而不是 click 事件
    14 replies    2017-04-02 17:14:53 +08:00
    jmyz0455
        1
    jmyz0455  
       Apr 1, 2017
    return false;
    但是不建议总是把事件设置在捕获阶段触发,然后还不能移除监听器,思路再理清一下,看能不能有别的做法。
    zhujinliang
        2
    zhujinliang  
       Apr 1, 2017 via iPhone
    做个 opacity 0.01 的东西罩在页面上面 XD
    bayallen
        3
    bayallen  
       Apr 1, 2017
    不是很明白要什么样的效果,是希望点击后能 emit 个 open 事件,但这个 click 不在其子元素上触发吗?

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

    Anyway, CSS 有个 pointer-events: none;属性,可以阻止元素响应 click 事件,或许会有用。
    param
        4
    param  
    OP
       Apr 1, 2017
    @jmyz0455 不好意思,标题描述有误,应该是阻止 close 事件,而不是 click 事件
    param
        5
    param  
    OP
       Apr 1, 2017
    @ferrum 不好意思,标题描述有误,应该是阻止 close 事件,而不是 click 事件
    lslqtz
        6
    lslqtz  
       Apr 2, 2017
    @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
        7
    param  
    OP
       Apr 2, 2017
    @lslqtz 不是阻止页面关闭,是想阻止 close 函数执行
    MinonHeart
        8
    MinonHeart  
       Apr 2, 2017 via iPhone
    在 close 函数内做判断
    param
        9
    param  
    OP
       Apr 2, 2017
    @MinonHeart close 函数不是我写的,在一个第三方库里面。最好不用改库,看来唯一的方法就是移除监听器了?
    MinonHeart
        10
    MinonHeart  
       Apr 2, 2017 via iPhone
    @param 外面再包一层
    param
        11
    param  
    OP
       Apr 2, 2017
    @MinonHeart document 的外面? document 不是最外了吗?
    MinonHeart
        12
    MinonHeart  
       Apr 2, 2017 via iPhone
    @param ((((;゚Д゚))))))) 你自己包一层作为 click 事件的函数
    lslqtz
        13
    lslqtz  
       Apr 2, 2017
    @param 你把 close 改了不就好了。。
    param
        14
    param  
    OP
       Apr 2, 2017
    @lslqtz 因为 close 是在第三方库里,所以最好不用改。但现在貌似没有好的方案了,只能移除监听器或者改库。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4827 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 59ms · UTC 01:09 · PVG 09:09 · LAX 18:09 · JFK 21:09
    ♥ Do have faith in what you're doing.