MCPcopy Create free account
hub / github.com/JsAaron/jQuery / liveHandler

Function liveHandler

1.6.1/src/event.js:1092–1178  ·  view source on GitHub ↗
( event )

Source from the content-addressed store, hash-verified

1090});
1091
1092function liveHandler( event ) {
1093 var stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret,
1094 elems = [],
1095 selectors = [],
1096 events = jQuery._data( this, "events" );
1097
1098 // Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911)
1099 if ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === "click" ) {
1100 return;
1101 }
1102
1103 if ( event.namespace ) {
1104 namespace = new RegExp("(^|\\.)" + event.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)");
1105 }
1106
1107 event.liveFired = this;
1108
1109 var live = events.live.slice(0);
1110
1111 for ( j = 0; j < live.length; j++ ) {
1112 handleObj = live[j];
1113
1114 if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) {
1115 selectors.push( handleObj.selector );
1116
1117 } else {
1118 live.splice( j--, 1 );
1119 }
1120 }
1121
1122 match = jQuery( event.target ).closest( selectors, event.currentTarget );
1123
1124 for ( i = 0, l = match.length; i < l; i++ ) {
1125 close = match[i];
1126
1127 for ( j = 0; j < live.length; j++ ) {
1128 handleObj = live[j];
1129
1130 if ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) {
1131 elem = close.elem;
1132 related = null;
1133
1134 // Those two events require additional checking
1135 if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) {
1136 event.type = handleObj.preType;
1137 related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];
1138
1139 // Make sure not to accidentally match a child element with the same selector
1140 if ( related && jQuery.contains( elem, related ) ) {
1141 related = elem;
1142 }
1143 }
1144
1145 if ( !related || related !== elem ) {
1146 elems.push({ elem: elem, handleObj: handleObj, level: close.level });
1147 }
1148 }
1149 }

Callers

nothing calls this directly

Calls 1

jQueryFunction · 0.70

Tested by

no test coverage detected