jquery-ui/tests/unit
Michał Gołębiowski-Owczarek 0c5becce0e
Widget: Optimize attachment of the _untrackClassesElement listener
jQuery UI 1.13.0 changed the logic attaching the `_untrackClassesElement`
listener in the `_classes` widget method; one of the side effects was calling
`this._on` for each node that needed the listener. That caused a severe
performance degradation for large comboboxes as each `_on` jQuery UI call
causes a jQuery `add` call that calls Sizzle's `uniqueSort` underneath.

Instead, collect the nodes that need the listener and then, outside of the loop,
create a jQuery object out of them and attach the listener once. That's still
slower than the jQuery 1.12 version but only slightly: 936 ms to 1.03s on a very
large list on a recent MacBook Pro, compared to ~30 seconds before this patch.

Fixes gh-2014
Closes gh-2037
2022-01-15 01:26:23 +01:00
..
accordion Build: Migrate from JSHint & JSCS to ESLint 2021-06-07 00:58:12 +02:00
autocomplete Widget: Optimize attachment of the _untrackClassesElement listener 2022-01-15 01:26:23 +01:00
button Build: Migrate from JSHint & JSCS to ESLint 2021-06-07 00:58:12 +02:00
checkboxradio Build: Migrate from JSHint & JSCS to ESLint 2021-06-07 00:58:12 +02:00
controlgroup Build: Migrate from JSHint & JSCS to ESLint 2021-06-07 00:58:12 +02:00
core Build: Migrate from JSHint & JSCS to ESLint 2021-06-07 00:58:12 +02:00
datepicker Build: Migrate from JSHint & JSCS to ESLint 2021-06-07 00:58:12 +02:00
dialog Build: Migrate from JSHint & JSCS to ESLint 2021-06-07 00:58:12 +02:00
draggable Build: Migrate from JSHint & JSCS to ESLint 2021-06-07 00:58:12 +02:00
droppable Build: Migrate from JSHint & JSCS to ESLint 2021-06-07 00:58:12 +02:00
effects Build: Migrate from JSHint & JSCS to ESLint 2021-06-07 00:58:12 +02:00
form-reset-mixin Build: Migrate from JSHint & JSCS to ESLint 2021-06-07 00:58:12 +02:00
menu Build: Migrate from JSHint & JSCS to ESLint 2021-06-07 00:58:12 +02:00
position Build: Migrate from JSHint & JSCS to ESLint 2021-06-07 00:58:12 +02:00
progressbar Build: Migrate from JSHint & JSCS to ESLint 2021-06-07 00:58:12 +02:00
resizable Build: Migrate from JSHint & JSCS to ESLint 2021-06-07 00:58:12 +02:00
selectable Build: Migrate from JSHint & JSCS to ESLint 2021-06-07 00:58:12 +02:00
selectmenu Widget: Optimize attachment of the _untrackClassesElement listener 2022-01-15 01:26:23 +01:00
slider Build: Migrate from JSHint & JSCS to ESLint 2021-06-07 00:58:12 +02:00
sortable Sortable: Fix positioning when moving a Draggable item into a Sortable 2021-11-15 18:39:25 +01:00
spinner Build: Migrate from JSHint & JSCS to ESLint 2021-06-07 00:58:12 +02:00
tabs Widget: Optimize attachment of the _untrackClassesElement listener 2022-01-15 01:26:23 +01:00
tooltip Tooltip: Don't crash on empty content 2021-11-08 11:53:45 +01:00
widget Widget: Make contextless widget construction work 2021-11-19 00:47:56 +01:00
all.html Tests: Only test latest patch versions for jQuery Core in TestSwarm 2016-07-08 12:51:44 -04:00
index.html Controlgroup: Inital commit of new widget 2015-10-07 10:57:59 -04:00
subsuite.js Build: Migrate from JSHint & JSCS to ESLint 2021-06-07 00:58:12 +02:00