我的代码 -
hits.on('rowSelected', function (evt) {
setTimeout(function() { alert('hi'); }, 5000);
});
所以我有一个hits
表。在该表中选择行时,将触发此事件。问题是我想要再次选择一行5秒钟。 IMO,这不起作用,因为每次选择一行时,表上的事件都会被触发,而不会给setTimeout
时间延迟。
有更好的方法吗?
答案 0 :(得分:0)
我建议使用变量来存储元素是否已被点击。
在检查此变量的setTimeout()
条件内运行if
。单击元素后,更新变量,以便不再单击它。然后,一旦超时解决,再次启用单击。
这可以在以下内容中看到:
var hits = $("p");
var clickable = true; // It's clickable by default
hits.on('click', function(evt) {
if (clickable) { // Check whether it can be clicked
clickable = false; // Once clicked, don't allow further clicks
setTimeout(function() {
alert('hi');
clickable = true; // Make it clickable again
}, 5000);
}
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>Click this paragraph.</p>
&#13;
希望这有帮助! :)
答案 1 :(得分:0)
我可以提出的最优雅的解决方案是使用按钮来模拟行为。
它的工作原理如下:
handler
)绑定到该元素,并使用jQuery的one()
仅执行一次。setTimeout()
等待5秒钟,然后重新绑定事件处理程序以进行下一次执行。
let button = $('#button');
button.one('click', function handler() {
console.log('clicked'); // handle event here
setTimeout(() => $(this).one('click', handler), 5000);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="button">Click me!</button>
&#13;
这种方法有以下好处: