下面的代码为单击附加事件处理程序,但不适用于键盘事件。我不希望仅仅是键盘事件的document.keypress,而是特定的类元素。因此,我已经写出了“测试”,它适用于鼠标点击,但不适用于任何键盘事件。
function test(className, fnCall, eventToApply){
if(typeof document.getElementById('x').getElementsByClassName(className) !='undefined') {
var els = document.getElementById('x').getElementsByClassName(className);
for(var i = 0; i < els.length; i++) {
if(els[i].addEventListener) { //Undefined for keypress events
els[i].addEventListener(eventName, function(e) { fnCall(e); }); }
else { //Hardcode for testing
els[i].onclick = function(e) { fnCall(e); };
els[i].onkeypress = function(e) { fnCall(e); } //doesn't work!
}
}不过,可以工作,但我无法在document或keypress本身上设置单独的元素处理程序。
document.addEventListener('keypress', function(event){
//This works, but setting up events for each class type element doesn't work for keypress
})换句话说,在不使用JQuery的情况下,是否可以执行以下操作:
document.addEventListener('keypress', function(event){
//This works in Jquery
$('.customClass-'+ event.keycode).click();
});
document.addEventListener('keypress', function(event){
//This doesn't register, says undefined for any event or attachEvenHandler/attachEvent
test('.class'+event.keycode, myFunction() , 'keypress');
});发布于 2016-03-20 20:42:21
你可以用这个
document.addEventListener('keypress', function(event){
var elements = document.getElementsByClassName("customClass-" + event.keycode);
for (var i = 0; i < elements.length; i++) {
elements[i].click();
}
});w3school文档
https://stackoverflow.com/questions/36119208
复制相似问题