2015-01-23 1 views
3

jQuery нормализует свойства событий в браузерах. Есть ли способ сделать jQuery нормализовать объект события, который не был вызван самим jQuery?Как нормализовать событие без jquery с помощью jquery

Например:

document.getElementById("id").addEventListener("click", function(eventObject) { 
    console.log(eventObject); 
}, true); 

eventObject не нормирован здесь, но я не могу использовать jQuery.on() в этом случае, потому что мне нужно это событие, чтобы вызвать в фазе захвата, а не фазы восходящей цепочки. Я хочу, чтобы этот eventObject был нормализован jQuery.

+2

Как это не нормализуется? Чего вы пытаетесь достичь? –

+0

'Ошибка: evenObject undefined @ строка 2: 16' – blex

+0

Почему вы не можете использовать jQuery для привязки события? Какая у вас проблема, когда вы пытались использовать 'jQuery.on()'? –

ответ

3

JQuery нормализует события, используя (недокументированные, поэтому подвержены изменениям в будущем) jQuery.event.fix и вы можете использовать его в вашем коде:

document.getElementById("id").addEventListener("click", function(eventObject) { 
    var jqNormalized = jQuery.event.fix(eventObject); 
    console.log(jqNormalized); // jQuery.Event {...} 
}, true); 

http://jsfiddle.net/ghkfhg5d/1/

+3

Правильный ответ, но имейте в виду, что '$ .event.fix()' не документирован. Это деталь реализации, которая может измениться или исчезнуть в одночасье. –

+0

Whta @ FrédéricHamidi сказал, что это важная информация, но при изменении версии библиотеки, используемой в вашем проекте, вы должны прочитать журнал изменений;) – pawel

+1

Спасибо, может быть, я должен открыть проблему в трекер-проблеме jQuery, чтобы сделать этот метод общественности? – Hoffmann

Смежные вопросы