Ticket #1681 (closed enhancement: fixed)
More powerful toggleClass()
| Reported by: | dimi | Owned by: | flesler |
|---|---|---|---|
| Priority: | major | Milestone: | 1.3 |
| Component: | core | Version: | 1.2.1 |
| Keywords: | Cc: | dimi, ecentinela, genezys | |
| Blocking: | Blocked by: |
Description
A lot of times you need to add/remove a class to an element based on a boolean. toggleClass() should take an optional second parameter that would control if the toggle will add or remove the class.
The added complexity would be absolutely minimal (a few more characters), but it would be really useful.
Attachments
Change History
comment:2 Changed 5 years ago by genezys
I agree with this one, it would be nice to be able to add/remove a class based on a boolean value.
Here are some examples:
"item" is an object "$item" is the jQuery object representing "item" I want to add the class "Selected" to the UI when the object has the attribute "selected".
First version, very verbose
if( item.selected )
{
$item.addClass("Selected");
}
else
{
$item.removeClass("Selected");
}
Second version, less verbose but less readable
var toggleClass = ( item.selected ? $.fn.addClass : $.fn.removeClass ); toggleClass.call($item, "Selected");
Third version, what would be nice
$item.toggleClass("Selected", item.selected);
comment:3 Changed 5 years ago by ecentinela
An why not?
$item[item.selected ? 'removeClass' : 'addClass']("Selected");
comment:4 Changed 5 years ago by flesler
- Milestone changed from 1.2.2 to 1.2.4
So.. what do we do about this ?
comment:5 Changed 5 years ago by genezys
Here are attached the modification to the core and tests to fix this bug.
Please follow the bug reporting guidlines and use jsFiddle when providing test cases and demonstrations instead of pasting the code in the ticket.


Could you provide a few examples of how this will improve your code?