Bug Tracker

Opened 12 years ago

Closed 11 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)

src-1681.diff (600 bytes) - added by genezys 11 years ago.
test-1681.diff (810 bytes) - added by genezys 11 years ago.

Download all attachments as: .zip

Change History (9)

comment:1 Changed 12 years ago by brandon

need: ReviewTest Case

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

comment:2 Changed 12 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 12 years ago by ecentinela

An why not?

$item[item.selected ? 'removeClass' : 'addClass']("Selected");

comment:4 Changed 12 years ago by flesler

Milestone: 1.2.21.2.4

So.. what do we do about this ?

Changed 11 years ago by genezys

Attachment: src-1681.diff added

Changed 11 years ago by genezys

Attachment: test-1681.diff added

comment:5 Changed 11 years ago by genezys

Here are attached the modification to the core and tests to fix this bug.

comment:6 Changed 11 years ago by flesler

Cc: dimi ecentinela genezys added
Milestone: 1.2.41.3
need: Test CasePatch
Owner: set to flesler
Status: newassigned

This is not a bug, it's an enhancement. I think this is doable, will handle it asap.

comment:7 Changed 11 years ago by flesler

Resolution: fixed
Status: assignedclosed

Added at [6000].

Note: See TracTickets for help on using tickets.