JSFiddle - React, Tailwind, and code Playground
HTML
<input type="button" value="foo" id="foo" />
<input type="button" value="bar" id="bar" />
<input type="button" value="baz" id="baz" />
<input type="button" value="magic removal" id="magic" />
JavaScript
$('#foo').bind('click.myNS', clickTest);
$('#bar').bind('click.myNS', clickTest);
$('#baz').bind('click.myNS', clickTest);
$("#magic").bind("click", function () {
var a = +new Date, b;
b = jQuery.magicalGlobalUnbindFunction("myNS");
alert("magic removal took: " + ((+new Date) - a) + " ms."+b+" handlers removed.");
});
function clickTest() {
alert("namespaced click");
}
(function () {
jQuery.magicalGlobalUnbindFunction = removeEventsByNamespace;
function removeEventsByNamespace(ns) {
var cache = jQuery.cache,
exp = jQuery.expando,
key, cacheObj, events, event, namespace, handlers = [],
eventsObjects, eventObject, i, l;
for (key in cache) {
cacheObj = cache[key][exp];
if ("events" in cacheObj) {
events = cacheObj.events;
for (event in events) {
eventObjects = events[event]
l = eventObjects.length;
for (i = 0; i < l; ++i) {
eventObject = eventObjects[i];
namespace = eventObject.namespace;
if (namespace === ns) {
handlers.push({
handler: eventObject.handler,
elem: cacheObj.handle.elem
});
}
}
}
}
}
l = handlers.length;
if (l) {
for (i = 0; i < l; ++i) {
jQuery.event.remove(handlers[i].elem, "." + ns, handlers[i].handler);
}
}
return l;
}
})()