Search and Top Navigation
#15136 closed bug (fixed)
Opened February 06, 2017 12:47AM UTC
Closed April 19, 2017 04:54PM UTC
Last modified April 19, 2017 04:57PM UTC
lots of duplicated events / memory leaks with tabs widget
| Reported by: | steph68 | Owned by: | scottgonzalez | 
|---|---|---|---|
| Priority: | minor | Milestone: | 1.12.2 | 
| Component: | ui.tabs | Version: | 1.12.1 | 
| Keywords: | Cc: | ||
| Blocked by: | Blocking: | 
Description
I've a lot of duplicated events and memory leaks with tabs widget.
An endless growing list of events like:
"remove" on the tabs container
"focusin", "mousedown" and "remove" on the tabs list ...
Some undesirable object references in "bindings", "classesElementLookup" ... which keep alive objects after a remove (memory leaks)
for example: in "tabs.js / function _processTabs", you setup tracked classes like this:
this._addClass( this.anchors, "ui-tabs-anchor" );
but, after in the function "_setupEvents", you get rid of all events with this :
this._off( this.anchors.add( this.tabs ).add( this.panels ) );
but in this case, the function "_untrackClassesElement" will never be triggered ...
and "classesElementLookup" will keep the anchor reference forever
another thing found in the source (small mistake, no consequence but dead code):
file widget.js / function _on :
if ( selector ) {
	delegateElement.on( eventName, selector, handlerProxy );
} else {
	element.on( eventName, handlerProxy );
}
selector is a string, so the if statement will be ever true
should be
if (selector.length)
Attachments (0)
Change History (4)
Changed February 06, 2017 12:59AM UTC by comment:1
Changed April 19, 2017 04:54PM UTC by comment:2
| owner: | → scottgonzalez | 
|---|---|
| resolution: | → fixed | 
| status: | new → closed | 
In [changeset:"ef2e9bab92ae898311baa295590cd487d9071319" ef2e9ba]:
#!CommitTicketReference repository="" revision="ef2e9bab92ae898311baa295590cd487d9071319" Widget: Improveevent bindings foroptions Fixes #15078 Fixes #15082 Fixes #15095 Fixes #15136 Fixes #15152 Closes gh-1769
Changed April 19, 2017 04:57PM UTC by comment:3
| milestone: | none → 1.12.2 | 
|---|
Changed April 19, 2017 04:57PM UTC by comment:4
| component: | ui.core → ui.tabs | 
|---|
Your demo here https://jqueryui.com/tabs/#manipulation show the problem.
Look on events of "#tabs" and "#tabs ul" and play with the add and the close buttons.
$._data($("#tabs")[0], "events");