aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsMap.java6
-rw-r--r--gwtquery-core/src/main/java/com/google/gwt/query/client/plugins/events/EventsListener.java7
2 files changed, 13 insertions, 0 deletions
diff --git a/gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsMap.java b/gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsMap.java
index b0c1ebb1..2c87171d 100644
--- a/gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsMap.java
+++ b/gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsMap.java
@@ -43,6 +43,12 @@ final public class JsMap<S, T> extends JavaScriptObject {
c().put(key.hashCode(), val);
}
+ public T remove(S key){
+ T old = get(key);
+ c().delete(key.hashCode());
+ return old;
+ }
+
public final String[] keys() {
return c().keys();
}
diff --git a/gwtquery-core/src/main/java/com/google/gwt/query/client/plugins/events/EventsListener.java b/gwtquery-core/src/main/java/com/google/gwt/query/client/plugins/events/EventsListener.java
index 6ba03bae..1f239fdc 100644
--- a/gwtquery-core/src/main/java/com/google/gwt/query/client/plugins/events/EventsListener.java
+++ b/gwtquery-core/src/main/java/com/google/gwt/query/client/plugins/events/EventsListener.java
@@ -16,6 +16,7 @@ package com.google.gwt.query.client.plugins.events;
import static com.google.gwt.query.client.GQuery.$;
import com.google.gwt.core.client.Duration;
+import com.google.gwt.core.client.JsArrayString;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.EventTarget;
import com.google.gwt.dom.client.NodeList;
@@ -531,12 +532,18 @@ public class EventsListener implements EventListener {
for (String k : liveBindFunctionByEventType.keys()) {
LiveBindFunction liveBindFunction = liveBindFunctionByEventType.<JsCache> cast().get(k);
liveBindFunction.removeBindFunctionForSelector(cssSelector, nameSpace, null);
+ if (liveBindFunction.isEmpty()){
+ liveBindFunctionByEventType.<JsCache>cast().delete(k);
+ }
}
} else {
LiveBindFunction liveBindFunction = liveBindFunctionByEventType.get(eventbits);
if (liveBindFunction != null) {
liveBindFunction.removeBindFunctionForSelector(cssSelector, nameSpace, originalEventName);
}
+ if (liveBindFunction.isEmpty()){
+ liveBindFunctionByEventType.remove(eventbits);
+ }
}
}