8

次のようなjQueryを使用して、1つのハンドラーで複数のイベントを処理できることを知っています。

$('#myID').bind('blur mousedown mouseup focus', function (e) {}

また、次のように jQuery を使用してすべての要素からイベントを登録できます。

$(document).on("click", "*", function(event) {
    console.log("Click");
});

2 つの質問があります。

  1. 純粋な JavaScript で複数のイベントに対して単一のリスナーを登録するにはどうすればよいですか?

  2. イベントを他のハンドラーに委譲するマスターハンドラーのように、JS または jQuery を使用してドキュメント内のすべてのイベントに対して単一のハンドラーを持つ方法はありますか?

私はこのようなものを見ています:

$(document).on("*", "*", function(event) {
    console.log("I am the master handler...");
    // call delegates
});
4

1 に答える 1

2

これは、javascript で取得できる最も近いものです: JSBIN-Demo

<input type="text" id="myText" />


var allEvents = ['focus','blur','mouseover','mousedown','mouseup','mousemove', 'click'];

function masterHandler(){
    var event = event || window.event;
    switch(event.type){
        case 'click':
            console.log('cliked');
            break;
        case 'mouseover':
            console.log('mouseover');
            break;
    }
}

function bindAllEvents(selector, handler) {
    var elements = document.querySelectorAll(selector);
    for(var i=0;i<elements.length;i++){
        for (var key in allEvents){
            elements[i].addEventListener(allEvents[key], handler, false);
        }
    }
}

bindAllEvents('*', masterHandler);
于 2012-12-24T11:12:55.170 に答える