gpt4 book ai didi

javascript - 为什么 dblclick 处理程序不取消单击处理程序?

转载 作者:行者123 更新时间:2023-11-28 12:35:16 27 4
gpt4 key购买 nike

JS

angular.module('my-app', []).controller('Ctrl', function ($scope, $timeout) {
var t;

$scope.click = function () {
t = $timeout(function () {
alert('click');
}, 1000);
};

$scope.dblclick = function () {
$timeout.cancel(t);
alert('dblclick');
};

});

模板

<div ng-app='my-app' ng-controller='Ctrl'>
<button ng-click='click()' ng-dblclick='dblclick()'>push</button>
</div>

JsFiddle

http://jsfiddle.net/Q6CXW/

最佳答案

有趣的是,所以当您双击时,您只调用超时取消一次,但在创建两个计时器之前计算两次单击。您只取消了一项。

这是一个固定的 fiddle :

http://jsfiddle.net/Q6CXW/1/

以及修改后的JS:

angular.module('my-app', [])
.controller('Ctrl', function ($scope, $timeout) {
var t=[];

$scope.click = function () {
t.push($timeout(function () {
alert('click');
}, 1000));
};

$scope.dblclick = function () {
for(var i=0;i<t.length;i++)
{
$timeout.cancel(t[i]);
}
t=[];
alert('dblclick');
};

});

关于javascript - 为什么 dblclick 处理程序不取消单击处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17656707/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com