Opened 16 years ago
Closed 15 years ago
#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 | |
Blocked by: | Blocking: |
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 (2)
Change History (9)
comment:1 Changed 16 years ago by
need: | Review → Test Case |
---|
comment:2 Changed 16 years ago by
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 15 years ago by
An why not?
$item[item.selected ? 'removeClass' : 'addClass']("Selected");
Changed 15 years ago by
Attachment: | src-1681.diff added |
---|
Changed 15 years ago by
Attachment: | test-1681.diff added |
---|
comment:5 Changed 15 years ago by
Here are attached the modification to the core and tests to fix this bug.
comment:6 Changed 15 years ago by
Cc: | dimi ecentinela genezys added |
---|---|
Milestone: | 1.2.4 → 1.3 |
need: | Test Case → Patch |
Owner: | set to flesler |
Status: | new → assigned |
This is not a bug, it's an enhancement. I think this is doable, will handle it asap.
Could you provide a few examples of how this will improve your code?