git.asbjorn.biz
/
jquery.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added a new .stop() method which stops all animations running on the matched set...
[jquery.git]
/
src
/
event
/
event.js
diff --git
a/src/event/event.js
b/src/event/event.js
index
3c5a119
..
6224d13
100644
(file)
--- a/
src/event/event.js
+++ b/
src/event/event.js
@@
-12,14
+12,14
@@
jQuery.event = {
// around, causing it to be cloned in the process
if ( jQuery.browser.msie && element.setInterval != undefined )
element = window;
// around, causing it to be cloned in the process
if ( jQuery.browser.msie && element.setInterval != undefined )
element = window;
-
+
// Make sure that the function being executed has a unique ID
if ( !handler.guid )
handler.guid = this.guid++;
// if data is passed, bind to handler
if( data != undefined ) {
// Make sure that the function being executed has a unique ID
if ( !handler.guid )
handler.guid = this.guid++;
// if data is passed, bind to handler
if( data != undefined ) {
- // Create temporary function pointer to original handler
+ // Create temporary function pointer to original handler
var fn = handler;
// Create unique handler function, wrapped around original handler
var fn = handler;
// Create unique handler function, wrapped around original handler
@@
-35,6
+35,11
@@
jQuery.event = {
handler.guid = fn.guid;
}
handler.guid = fn.guid;
}
+ // Namespaced event handlers
+ var parts = type.split(".");
+ type = parts[0];
+ handler.type = parts[1];
+
// Init the element's event structure
if (!element.$events)
element.$events = {};
// Init the element's event structure
if (!element.$events)
element.$events = {};
@@
-82,6
+87,12
@@
jQuery.event = {
remove: function(element, type, handler) {
var events = element.$events, ret, index;
remove: function(element, type, handler) {
var events = element.$events, ret, index;
+ // Namespaced event handlers
+ if ( typeof type == "string" ) {
+ var parts = type.split(".");
+ type = parts[0];
+ }
+
if ( events ) {
// type is actually an event object here
if ( type && type.type ) {
if ( events ) {
// type is actually an event object here
if ( type && type.type ) {
@@
-101,7
+112,9
@@
jQuery.event = {
// remove all handlers for the given type
else
for ( handler in element.$events[type] )
// remove all handlers for the given type
else
for ( handler in element.$events[type] )
- delete events[type][handler];
+ // Handle the removal of namespaced events
+ if ( !parts[1] || events[type][handler].type == parts[1] )
+ delete events[type][handler];
// remove generic event handler if no more handlers exist
for ( ret in events[type] ) break;
// remove generic event handler if no more handlers exist
for ( ret in events[type] ) break;
@@
-134,10
+147,13
@@
jQuery.event = {
// Handle triggering a single element
} else {
// Handle triggering a single element
} else {
- var val, ret, fn = jQuery.isFunction( element[ type ] || null );
+ var val, ret, fn = jQuery.isFunction( element[ type ] || null ),
+ // Check to see if we need to provide a fake event, or not
+ evt = !data[0] || !data[0].preventDefault;
// Pass along a fake event
// Pass along a fake event
- data.unshift( this.fix({ type: type, target: element }) );
+ if ( evt )
+ data.unshift( this.fix({ type: type, target: element }) );
// Trigger the event
if ( jQuery.isFunction( element.$handle ) )
// Trigger the event
if ( jQuery.isFunction( element.$handle ) )
@@
-147,6
+163,10
@@
jQuery.event = {
if ( !fn && element["on"+type] && element["on"+type].apply( element, data ) === false )
val = false;
if ( !fn && element["on"+type] && element["on"+type].apply( element, data ) === false )
val = false;
+ // Extra functions don't get the custom event object
+ if ( evt )
+ data.shift();
+
// Handle triggering of extra function
if ( extra && extra.apply( element, data ) === false )
val = false;
// Handle triggering of extra function
if ( extra && extra.apply( element, data ) === false )
val = false;
@@
-170,6
+190,10
@@
jQuery.event = {
// Empty object is for triggered events with no data
event = jQuery.event.fix( event || window.event || {} );
// Empty object is for triggered events with no data
event = jQuery.event.fix( event || window.event || {} );
+ // Namespaced event handlers
+ var parts = event.type.split(".");
+ event.type = parts[0];
+
var c = this.$events && this.$events[event.type], args = Array.prototype.slice.call( arguments, 1 );
args.unshift( event );
var c = this.$events && this.$events[event.type], args = Array.prototype.slice.call( arguments, 1 );
args.unshift( event );
@@
-179,14
+203,17
@@
jQuery.event = {
args[0].handler = c[j];
args[0].data = c[j].data;
args[0].handler = c[j];
args[0].data = c[j].data;
- var tmp = c[j].apply( this, args );
+ // Filter the functions by class
+ if ( !parts[1] || c[j].type == parts[1] ) {
+ var tmp = c[j].apply( this, args );
- if ( val !== false )
- val = tmp;
+ if ( val !== false )
+ val = tmp;
- if ( tmp === false ) {
- event.preventDefault();
- event.stopPropagation();
+ if ( tmp === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
}
}
}
}
@@
-975,7
+1002,7
@@
function bindReady(){
// script does not exist if jQuery is loaded dynamically
if ( script )
script.onreadystatechange = function() {
// script does not exist if jQuery is loaded dynamically
if ( script )
script.onreadystatechange = function() {
- if ( document.readyState != "complete" ) return;
+ if ( this.readyState != "complete" ) return;
jQuery.ready();
};
jQuery.ready();
};