handle = jQuery.data(elem, "handle") || jQuery.data(elem, "handle", function(){
// Handle the second event of a trigger and when
// an event is called after a page has unloaded
- if ( typeof jQuery !== "undefined" && !jQuery.event.triggered )
- return jQuery.event.handle.apply(arguments.callee.elem, arguments);
+ return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
+ jQuery.event.handle.apply(arguments.callee.elem, arguments) :
+ undefined;
});
// Add elem as a property of the handle function
// This is to prevent a memory leak with non-native
// Namespaced event handlers
var namespace = type.split(".");
type = namespace.shift();
- namespace = RegExp(namespace.sort().join(".*\\.") + "(\\.|$)");
+ namespace = RegExp("(^|\\.)" + namespace.sort().join(".*\\.") + "(\\.|$)");
if ( events[type] ) {
// remove the given handler for the given type
// Namespaced event handlers
namespace = event.type.split(".");
event.type = namespace.shift();
- namespace = RegExp(namespace.sort().join(".*\\.") + "(\\.|$)");
+
// Cache this now, all = true means, any handler
- all = !namespace && !event.exclusive;
+ all = !namespace.length && !event.exclusive;
+
+ namespace = RegExp("(^|\\.)" + namespace.sort().join(".*\\.") + "(\\.|$)");
handlers = ( jQuery.data(this, "events") || {} )[event.type];