Your question is a bit vague, but I think you are asking how jQuery implements preventDefaultand dispatches custom events. This is what I will answer.
Default Prevention and Distribution
, , , . . , . - , . , , , , , . JavaScript, -: W3C Microsoft.
JavaScript W3C DOM Level 2 Events, DOM Level 3 Events. addEventListener. , - . , preventDefault , stopPropagation.
Internet Explorer 9 W3C. attachEvent. , window.event. , false returnValue , true cancelBubble.
, , :
function handleClick (event) {
if (event && event.stopPropagation) {
event.preventDefault();
event.stopPropagation();
} else {
event = window.event;
event.returnValue = false;
event.cancelBubble = true;
}
}
, :
var elem = document.getElementById( 'some-element' );
if (elem.addEventListener) {
elem.addEventListener( 'click', handleClick, false );
} else {
elem.attachEvent( 'onclick', handleClick );
}
jQuery event.js. add , jQuery.bind jQuery.on. jQuery.Event.
JavaScript. W3C Microsoft. , . , . :
var EventSource = function() {}
EventSource.prototype = {
attach: function (name, callback) {
if (!this.listeners) this.listeners = {};
if (!this.listeners[ name ]) this.listeners[ name ] = [];
this.listeners[ name ].push( callback );
},
detach: function (name, callback) {
if (!this.listeners || !this.listeners[ name ]) return;
var listeners = this.listeners[ name ];
for (var idx = 0; idx < listeners.length; idx++) {
if (listeners[ idx ] === callback) {
listeners.splice( idx, 1 );
break;
}
}
},
dispatch: function (name, event) {
if (typeof event === 'undefined') event = {};
event.event = name;
if (!this.listeners || !this.listeners[ name ]) return false;
var listeners = this.listeners[ name ];
for (var idx = 0; idx < listeners.length; idx++) {
try {
listeners[ idx ]( event );
} catch (caught) {
}
});
return true;
}
};
, jQuery, , , .