MntCw
V2EX  ›  问与答

举个粟子: html 的一个 button,如何在点击 10 下后不响应 click 事件?

  •  
  •   MntCw · Nov 2, 2014 · 3997 views
    This topic created in 4235 days ago, the information mentioned may be changed or developed.
    我是这么做的,在document里定义一个i
    $("#btn").click(function(){
    if( i != 10){
    //do something
    }

    });

    但我觉得应该有更好的方式来实现,不知道大家有没有什么建议?
    12 replies    2014-11-02 21:21:07 +08:00
    loading
        1
    loading  
       Nov 2, 2014
    提醒一下:如果和服务器有交互,记得服务器也限制。
    sanddudu
        2
    sanddudu  
       Nov 2, 2014 via iPhone
    removeListener 不行吗
    kran
        3
    kran  
       Nov 2, 2014 via iPhone
    $.data()
    或者返回闭包
    MntCw
        4
    MntCw  
    OP
       Nov 2, 2014
    @sanddudu 在哪个时候remove 是在else里面吗?
    MntCw
        5
    MntCw  
    OP
       Nov 2, 2014
    @kran 请教一下
    MntCw
        6
    MntCw  
    OP
       Nov 2, 2014
    @loading OK 了解,谢啦!!
    sanddudu
        7
    sanddudu  
       Nov 2, 2014 via iPhone
    @MntCw 是的
    如果到 10 次,就移除这个监听器
    kran
        8
    kran  
       Nov 2, 2014
    $('#btn').click((function(times){
    return function(){
    //代码
    }
    })(10));
    这样应该可以的.我不做前端,你式一下
    MntCw
        9
    MntCw  
    OP
       Nov 2, 2014
    @sanddudu OK 了解了,但是可以试试@kran的做法
    MntCw
        10
    MntCw  
    OP
       Nov 2, 2014
    @kran OK 我试一下,看来我对闭包的理解还不够
    littlepanzh
        11
    littlepanzh  
       Nov 2, 2014 via iPhone
    var fn = function (event) {
    var $target = $(event.currentTarget);
    var i = $target.data('i') || 0;
    i = ~~i + 1;
    $target.data('i', i);
    // do something;
    if (i > 9) {
    $target.off('click', fn);
    }
    };
    $('#btn').click(fn);
    MntCw
        12
    MntCw  
    OP
       Nov 2, 2014
    @littlepanzh 看明白了,感谢!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1388 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 16:55 · PVG 00:55 · LAX 09:55 · JFK 12:55
    ♥ Do have faith in what you're doing.