【问题标题】:Treat Single Click and Double Click as same将单击和双击视为相同
【发布时间】:2019-10-15 14:09:00
【问题描述】:

无论我点击按钮一次还是两次,我都希望能够执行一次foo()

<span> (click)="foo()" </span>

foo() {
    console.log("You've clicked on foo");
}

我尝试过使用这个stackoverflow answer,但单击它两次仍会导致多个console.logs。这个函数怎么只能运行一次?

注意:并不是真的在寻找三次/四次点击(仅单次/两次)

【问题讨论】:

    标签: javascript html angular onclick


    【解决方案1】:

    尝试使用setTimeoutclearTimeout并处理用户点击:

    <span 
        (click)="func1()" 
        (dblclick)="func2()">
        Hello
    </span>
    

    打字稿:

    timer = 0;
    delay = 200;
    prevent = false;
    
    func1(){
        this.timer = setTimeout(() => {
            if (!this.prevent) {
                this.sayHello();
            } 
            this.prevent = false;
        }, this.delay);
    }
    
    func2(){
        clearTimeout(this.timer);
        this.prevent = true;
        this.sayHello();
    }
    
    sayHello(){
        console.log('Hello, world!:)');
    }
    

    The work stackblitz example

    【讨论】:

    • @Jedo 非常感谢!我很高兴它对你有所帮助!:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-11
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    相关资源
    最近更新 更多