Heim >Web-Frontend >js-Tutorial >Wie führe ich das Keydown-Ereignis in Intervallen in JQuery aus?

Wie führe ich das Keydown-Ereignis in Intervallen in JQuery aus?

黄舟
黄舟Original
2017-06-27 13:47:402032Durchsuche

Wenn Sie das Keydown-Ereignis verwenden, wird es so lange ausgeführt, wie Sie es gedrückt halten. Jetzt muss ich es nur einmal implementieren, auch wenn ich es gedrückt halte.

Können Sie das Ausführungsintervall von Keydown festlegen? Kann es alle 400 ms ausgeführt werden, während eine bestimmte Taste gedrückt wird?

$(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);
}

});

Code schreiben/Ich möchte auch Klavier spielen/Das Frontend ist nur ein Titel/Lebensläufe sammeln

Keydown und Keyup sind ein Paar.
Wenn Sie also den Tastendruck überwachen, können Sie den Tastendruck, der durch das Gedrückthalten der Taste ausgelöst wird, eliminieren.
Setzen Sie beispielsweise bool=true, bool=true während des Keyup; beurteilen Sie, ob bool während des keydown wahr ist, führen Sie es nur aus, wenn true, und dann bool=false.

Wenn die Seite dies zulässt,
neben der Beurteilung anhand von Parametern können Sie auch one() von jQuery verwenden, um es nur einmal auszuführen

$(btn).one("keydown",function(){
//dosomething
});

one() von jQuery kann nur einmal ausgeführt werden, wenn die Seite nicht aktualisiert wird, aber das Hinzufügen von Parametern ist anders. Es gibt nur ein Ereignis, wenn die Taste gedrückt und nicht losgelassen wird, aber das Keydown-Ereignis ist immer noch gebunden Die Taste nach unten wird losgelassen und erneut gedrückt.

Hier ist ein Hausmittel, das Sie ausprobieren können ... Es ist hässlich und ungenau, aber JavaScript wäre nicht in der Lage, so viel Genauigkeit mit der Zeit zu erreichen.

(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;
	});})();

Das obige ist der detaillierte Inhalt vonWie führe ich das Keydown-Ereignis in Intervallen in JQuery aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn