Open gtasker10 opened 1 year ago
Thanks for the report. Does the issue you describe exist when jQuery UI 1.12.1 is used or only with jQuery UI 1.13.0 or newer?
it's also in v1.12
https://github.com/jquery/jquery-ui/blob/9180a8180b17c38f6c3f27ba46d4546d800d3508/ui/effect.js#L232
do nothing
if(remove === add){return;}
or
if(remove === add){
return $.effects.animateClass.call( this, {
add: add
}, speed, easing, callback );
} else {
return $.effects.animateClass.call( this, {
remove: remove,
add: add
}, speed, easing, callback );
}
Thanks for the report. Since the issue is already in 1.12, given limited team resources it's not likely to be fixed by the UI team; see the project status at https://blog.jqueryui.com/2021/10/jquery-maintainers-update-and-transition-jquery-ui-as-part-of-overall-modernization-efforts/. PRs are welcome if they're not too complex and contain tests.
The docs don't really specify what happens if a class appears in both properties. $.effects.animateClass
currently applies the options in iteration order from what I understand. And because remove
is specified after add
, it has precendence.
It's probably too late to change it now and I'm not even sure if that would be desired. I'd advise to just filter out the classes you don't want removing from the second argument.
I am using jQuery 3.6.0. Seems to be an undocumented "feature" with switchClass(). If I specify the same class to remove and then add, I get no class. In the following example, I would expect to see class="big":
The above generates:
<input type="text" id="myInput" class="">