相当于jQuery的keyup()和keydown()的JavaScript [英] JavaScript equivalent of jQuery's keyup() and keydown()
问题描述
我在stackoverflow上看到了这个链接: $(document).ready equivalent without jQuery a>
在我的上下文中,我使用
$(document ).keydown(按键);
$(document).keyup(Keyoff);
函数
函数Keypress(evt){
if(evt.keyCode == 39)rightpress = true;
else if(evt.keyCode == 37)leftpress = true;
}
//取消设置
函数Keyoff(evt){
if(evt.keyCode == 39)rightpress = false;
else if(evt.keyCode == 37)leftpress = false;
}
是否有JavaScript等价物?像window.onload?
为了在jQuery上使用更多的等效 code>方法,你不应该使用 onkeydown
和 onkeyup
处理程序。使用 addEventListener
或 attachEvent
。 attachEvent
专门针对IE的旧版本,所以 addEventListener
是标准的,并被所有其他浏览器使用。但是你应该总是包含支持,所以你可以创建一个函数来处理这一切。尝试:
$ $ p $ function addEvent(element,eventName,callback){
if(element.addEventListener){
element.addEventListener(eventName,callback,false);
} else if(element.attachEvent){
element.attachEvent(on+ eventName,callback);
}
}
addEvent(window,keydown,Keypress);
addEvent(window,keyup,Keyoff);
这允许您添加多个处理程序,就像jQuery的 on
方法。设置 .onkeydown
和 .onkeyup
属性只允许一个处理程序(除非您想覆盖另一个处理程序)。使用 addEvent
函数可以实现标准的跨浏览器事件处理(例如基于回调的返回类型)。它现在真的不重要 - 如果你想要完整的跨浏览器兼容性,那就是jQuery的用途:)
参考文献:
-
addEventListener
: https://developer.mozilla.org/zh-CN/docs/DOM/EventTarget.addEventListener - addEventListener vs onclick
I have seen this link on stackoverflow: $(document).ready equivalent without jQuery
In my context I am using
$(document).keydown(Keypress);
$(document).keyup(Keyoff);
for the functions
function Keypress(evt) {
if (evt.keyCode == 39) rightpress = true;
else if (evt.keyCode == 37) leftpress = true;
}
//unset
function Keyoff(evt) {
if (evt.keyCode == 39) rightpress = false;
else if (evt.keyCode == 37) leftpress = false;
}
Is there a javascript equivalent? Like window.onload?
In order to use some more "equivalent" to jQuery's on
method, you shouldn't use the onkeydown
and onkeyup
handlers. Use addEventListener
or attachEvent
. attachEvent
is specifically for older versions of IE, so addEventListener
is the standard and is used by all other browsers. But you should always include support, so you can make a function to handle it all. Try:
function addEvent(element, eventName, callback) {
if (element.addEventListener) {
element.addEventListener(eventName, callback, false);
} else if (element.attachEvent) {
element.attachEvent("on" + eventName, callback);
}
}
addEvent(window, "keydown", Keypress);
addEvent(window, "keyup", Keyoff);
This allows you to add multiple handlers, just like jQuery's on
method does. Setting the .onkeydown
and .onkeyup
properties allows only one handler (unless you want to overwrite another). There's a lot more that the addEvent
function could do, to make a standard, cross-browser event handling (an example is what happens based on the return type of the callback). It's really not important for now - if you want complete cross browser compatibility, that's what jQuery's for :)
References:
addEventListener
: https://developer.mozilla.org/en-US/docs/DOM/EventTarget.addEventListener- addEventListener vs onclick
这篇关于相当于jQuery的keyup()和keydown()的JavaScript的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!