У меня есть установка теоретически, как это [см скрипку ->http://jsfiddle.net/GeZyw/]:Поймайте Javascript CustomEvent по JQuery на() с сохранением пользовательских свойств на первый «уровень»
var EventTest = function(element) {
this.element = element;
this.element.addEventListener('click', elementClick);
function elementClick() {
var event = document.createEvent('CustomEvent');
event.initEvent('myevent', false, false);
event['xyz']='abc';
event.customData='test';
console.log(event);
this.dispatchEvent(event);
}
}
var element = document.getElementById('test');
var test = new EventTest(element);
$(document).ready(function() {
$("#test").on('myevent', function(e) {
console.log('myevent', e);
});
});
То, что я хочу, чтобы создать CustomEvent в чистом javascript, обогатите его некоторыми свойствами и активируйте это событие, чтобы его можно было схватить также библиотекой, например jQuery.
Как вы можете видеть в скрипке, CustomEvent запускается хорошо и на самом деле заполняется пользовательскими свойствами - но когда он достигает jQuery on()
, пользовательские свойства ушли с первого уровня. Мои пользовательские свойства теперь понижены до e.originalEvent.xyz
и так далее.
Это не очень хорошо. Я хочу, чтобы по крайней мере мои собственные свойства были на первом уровне.
Также, в идеальном мире, я хотел бы избавиться от большинства стандартных свойств в посланном случае, так оно содержало (теоретически оптимальный):
e = {
xyz : 'abc',
customData : 'test'
}
Возможен ли это вообще ? Если да, как мне это сделать?
Почему в downvote? – davidkonrad