Skip to content

Commit 3903698

Browse files
author
James Wilson
committed
support removing specific attached events
1 parent 7768637 commit 3903698

File tree

1 file changed

+25
-9
lines changed

1 file changed

+25
-9
lines changed

src/ResizeSensor.js

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,29 @@
3030
* @constructor
3131
*/
3232
function EventQueue() {
33-
this.q = [];
33+
var q = [];
3434
this.add = function(ev) {
35-
this.q.push(ev);
35+
q.push(ev);
3636
};
3737

3838
var i, j;
3939
this.call = function() {
40-
for (i = 0, j = this.q.length; i < j; i++) {
41-
this.q[i].call();
40+
for (i = 0, j = q.length; i < j; i++) {
41+
q[i].call();
4242
}
4343
};
44+
45+
this.remove = function(ev) {
46+
var newQueue = [];
47+
for(i = 0, j = q.length; i < j; i++) {
48+
if(q[i] !== ev) newQueue.push(q[i]);
49+
}
50+
q = newQueue;
51+
}
52+
53+
this.length = function() {
54+
return q.length;
55+
}
4456
}
4557

4658
/**
@@ -163,19 +175,23 @@
163175
attachResizeEvent(element, callback);
164176
}
165177

166-
this.detach = function() {
178+
this.detach = function(ev) {
167179
if (isCollectionTyped) {
168180
var i = 0, j = element.length;
169181
for (; i < j; i++) {
170-
ResizeSensor.detach(element[i]);
182+
ResizeSensor.detach(element[i], ev);
171183
}
172184
} else {
173-
ResizeSensor.detach(element);
185+
ResizeSensor.detach(element, ev);
174186
}
175187
};
176188
};
177189

178-
ResizeSensor.detach = function(element) {
190+
ResizeSensor.detach = function(element, ev) {
191+
if(typeof ev == "function"){
192+
element.resizedAttached.remove(ev);
193+
if(element.resizedAttached.length()) return;
194+
}
179195
if (element.resizeSensor) {
180196
element.removeChild(element.resizeSensor);
181197
delete element.resizeSensor;
@@ -191,4 +207,4 @@
191207
window.ResizeSensor = ResizeSensor;
192208
}
193209

194-
})();
210+
})();

0 commit comments

Comments
 (0)