aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorjeresig <jeresig@gmail.com>2010-03-02 17:34:12 -0500
committerjeresig <jeresig@gmail.com>2010-03-02 17:34:12 -0500
commit9584e908a2daa2a72bd738302dba7cfd0656dbdf (patch)
tree325eba6f75c8651842e56ade094fbc2a2741e07d /src
parent04e31ff058548fbdbdf77c61d4edc3a974b080f4 (diff)
downloadjquery-9584e908a2daa2a72bd738302dba7cfd0656dbdf.tar.gz
jquery-9584e908a2daa2a72bd738302dba7cfd0656dbdf.zip
Added in Ben Alman's proposed event.namespace property (the property holds the namespaces specified in a call to trigger). Additionally fixes namespaces with .live(). Fixes #6208 and #6209.
Diffstat (limited to 'src')
-rw-r--r--src/event.js16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/event.js b/src/event.js
index cec2845a1..b549cd544 100644
--- a/src/event.js
+++ b/src/event.js
@@ -368,7 +368,7 @@ jQuery.event = {
},
handle: function( event ) {
- var all, handlers, namespaces, namespace, events, args = jQuery.makeArray( arguments );
+ var all, handlers, namespaces, namespace_sort = [], namespace_re, events, args = jQuery.makeArray( arguments );
event = args[0] = jQuery.event.fix( event || window.event );
event.currentTarget = this;
@@ -379,7 +379,9 @@ jQuery.event = {
if ( !all ) {
namespaces = event.type.split(".");
event.type = namespaces.shift();
- namespace = new RegExp("(^|\\.)" + namespaces.slice(0).sort().join("\\.(?:.*\\.)?") + "(\\.|$)");
+ namespace_sort = namespaces.slice(0).sort();
+ namespace_re = new RegExp("(^|\\.)" + namespace_sort.join("\\.(?:.*\\.)?") + "(\\.|$)");
+ event.namespace = namespace_sort.join(".");
}
events = jQuery.data(this, "events");
@@ -393,7 +395,7 @@ jQuery.event = {
var handleObj = handlers[ j ];
// Filter the functions by class
- if ( all || namespace.test( handleObj.namespace ) ) {
+ if ( all || namespace_re.test( handleObj.namespace ) ) {
// Pass in a reference to the handler function itself
// So that we can later remove it
event.handler = handleObj.handler;
@@ -997,7 +999,7 @@ jQuery.each(["live", "die"], function( i, name ) {
function liveHandler( event ) {
var stop, maxLevel, elems = [], selectors = [],
- related, match, handleObj, elem, j, i, l, data, close,
+ related, match, handleObj, elem, j, i, l, data, close, namespace,
events = jQuery.data( this, "events" );
// Make sure we avoid non-left-click bubbling in Firefox (#3861)
@@ -1005,6 +1007,10 @@ function liveHandler( event ) {
return;
}
+ if ( event.namespace ) {
+ namespace = new RegExp("(^|\\.)" + event.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)");
+ }
+
event.liveFired = this;
var live = events.live.slice(0);
@@ -1028,7 +1034,7 @@ function liveHandler( event ) {
for ( j = 0; j < live.length; j++ ) {
handleObj = live[j];
- if ( close.selector === handleObj.selector ) {
+ if ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) ) {
elem = close.elem;
related = null;