Side navigation
#2286 closed enhancement (fixed)
Opened February 06, 2008 03:58AM UTC
Closed January 31, 2009 09:38PM UTC
Add ability to use "Category" namespacing on events
Reported by: | cthatcher | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | 1.2.3 |
Component: | event | Version: | 1.2.2 |
Keywords: | event namespace | Cc: | |
Blocked by: | Blocking: |
Description
the milestone / version are actually 1.2.4 / 1.2.3 respectively (the trac hasnt been updated yet as 1.2.3 ment out minutes ago).
This excerpt is taken from the dev list thread "[jquery-dev] Re: $().unbind('.namespace') added", which was initally an announcement from Scott Gonzalez of the new feature to allow developers unbind events registered to namespaces.
I had mentioned this a little while ago and it might have slipped by or it might have been graciously left alone because it's not a good idea, but internally I usually have two namespaces so each module has something like Outer.Inner.Class and I generally use the namespace, class and event to bind, so: jQuery.bind("myevent.Outer", function(){...}); or jQuery.bind("myevent.Outer.Inner", function(){...}); or jQuery.bind("myevent.Outer.Inner.Class", function(){...}); Right now jQuery.event has 64 // Namespaced event handlers 65 var parts = type.split("."); 66 type = parts[0]; 67 handler.type = parts[1]; which means, in my case only Outer is ever included in the namespace registering. Then it's unbind all, or unbind nothing for the namespaced events. If instead it were: 64 // Namespaced event handlers 65 var parts = type.split("."); 66 type = parts.shift(); 67 handler.type = parts.join("."); I'd be able to do: jQuery.unbind(".Outer"); or jQuery.unbind(".Outer.Inner"); or jQuery.unbind(".Outer.Inner.Class") which of course would require the remove was changed to: // Namespaced event handlers 126 var parts = type.split("."); 127 type = parts.shift(); parts = parts.join("."); 128 129 if ( events[type] ) { 130 // remove the given handler for the given type 131 if ( handler ) 132 delete events[type][handler.guid]; 133 134 // remove all handlers for the given type 135 else 136 for ( handler in events[type] ) 137 // Handle the removal of namespaced events 138 if ( !parts || events[type][handler].type == parts ) 139 delete events[type][handler]; I'd love to hear your thoughts, especially if it's a bad idea so I can understand why. Thanks! Chris Thatcher christopher.thatcher@comcast.net
Attachments (0)
Change History (1)
Changed January 31, 2009 09:38PM UTC by comment:1
resolution: | → fixed |
---|---|
status: | new → closed |
As I understand the desired feature, this was implemented as part of jQuery 1.3.