【问题标题】:Add keypress event to classes without JQuery向没有 JQuery 的类添加按键事件
【发布时间】:2016-03-20 20:34:40
【问题描述】:

下面的代码附加了点击事件处理程序,但不适用于键盘事件。我不仅想要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!
                        }
                    }

虽然文档 onkeypress 有效,但我无法在文档就绪或按键本身上设置单个元素处理程序。

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');

 });

【问题讨论】:

    标签: javascript dom-events keyboard-events eventhandler


    【解决方案1】:

    你可以用这个

    document.addEventListener('keypress', function(event){
        var elements = document.getElementsByClassName("customClass-" + event.keycode);
        for (var i = 0; i < elements.length; i++) {
            elements[i].click();
        }
    });
    

    w3school 文档

    【讨论】:

    • 虽然这可能在技术上回答了这个问题,但您可能需要提供一些背景信息来说明它解决问题的原因。
    猜你喜欢
    • 1970-01-01
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-07
    • 1970-01-01
    • 2019-11-17
    相关资源
    最近更新 更多