Maison > interface Web > js tutoriel > le corps du texte

Comment exécuter l'événement keydown à intervalles réguliers dans jquery ?

黄舟
Libérer: 2017-06-27 13:47:40
original
2016 Les gens l'ont consulté

Si vous utilisez l'événement keydown, alors il continuera à s'exécuter tant que vous le maintiendrez enfoncé. Maintenant, je dois l'implémenter une seule fois, même si je le maintiens enfoncé.

Pouvez-vous définir l'intervalle d'exécution du keydown ? Peut-il être exécuté toutes les 400 ms en appuyant sur une certaine touche ?

$(document).keydown(function(e){   //按下去就执行,按照事件类型来进行分类

var  corelist = $('.corelist_item');
var  readfloor = $('.J_read_floor');
if(corelist.length || readfloor.length){
if(e.keyCode == 87){    // w键 上一篇/楼
listJump(false,10,corelist);
listJump(false,55,readfloor);
}

});
Copier après la connexion

Écrire le code/Je veux aussi jouer du piano/Le front-end n'est qu'un titre/Collecter les CV

Les touches enfoncées et les touches enfoncées sont un paire.
Donc, si vous surveillez le keyup, vous pouvez éliminer le keydown déclenché lorsque la touche est maintenue enfoncée.
Par exemple, définissez bool=true, bool=true pendant le keyup ; jugez si bool est vrai pendant le keydown, exécutez-le uniquement s'il est vrai, puis bool=false.

Si la page le permet,
en plus de juger par paramètres, vous pouvez également utiliser one() de jQuery pour l'exécuter une seule fois

$(btn).one("keydown",function(){
//dosomething
});
Copier après la connexion

utiliser le one() de jQuery n'est exécuté qu'une seule fois lorsque la page n'est pas actualisée, mais l'ajout de paramètres est différent lorsque vous appuyez sur la touche et ne la relâchez pas, il n'y a qu'un seul événement, mais lorsque la touche est relâchée et enfoncée à nouveau. , l'événement keydown est toujours lié.

Voici un remède maison à essayer... C'est moche et inexact, mais JavaScript ne serait pas en mesure d'atteindre autant de précision à temps.

(function() {
	var lock;
	var interval = 400;
	$(document).keydown(function() {
		var date = new Date();
		var time = date.getTime();
		if (typeof lock == 'undefined') {
			lock = time % interval;
		}
		if (Math.abs(lock - time % interval) < 13) {
			console.log(date.getHours() + &#39;:&#39; + date.getMinutes() + &#39;:&#39; + date.getSeconds() + &#39;:&#39; + date.getMilliseconds());
			//your code goes here!
		}
	}).keyup(function() {
		lock = undefined;
	});})();
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal