Bug Tracker

Opened 10 years ago

Closed 9 years ago

#5873 closed bug (fixed)

removeClass leaves space after removing last class

Reported by: dmifedorenko Owned by:
Priority: low Milestone: 1.4
Component: core Version: 1.4
Keywords: removeClass space Cc:
Blocked by: Blocking:

Description

Windows XP, Firefox 3.5.7.

Then '.removeClass("disabled")' called for '<tr class="disabled">' the result will be '<tr class=" ">'.

But expected result is '<tr class="">'.

Test case:

<html> <body> <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.js"></script> Why removeClass add space if here is no class?!

<table> <tr class="disabled">

<td><h1 onclick="var tr = $(this).parents('tr'); tr.removeClass('disabled'); $('body').append('table row class after removeClass = \+tr.attr('class')+'\'<br/>')">click me</h1></td>

</tr> </table>

<pre> To fix: in "removeClass" method after elem.className = className.substring(1, className.length - 1); add if (elem.className == " ") elem.className = ""; </pre> <br/> </body> </html>

Change History (5)

comment:1 Changed 10 years ago by dmifedorenko

Hey?! Any body?! Can you fix it? :)

comment:2 Changed 9 years ago by addyosmani

The length of the class once you've removed it does in fact seem to be 1 (ie the space mentioned in the original ticket).

Looking at core, this seems to be being done on purpose in the removeClass function around lines 1297-1282:

var className = (" " + elem.className + " ").replace(rclass, " "); for ( var c = 0, cl = classNames.length; c < cl; c++ ) { className = className.replace(" " + classNames[c] + " ", " "); }

Whilst I think a second review to confirm this behavior's need would be useful, I also question what (if any) impact it being in place has on a developer's ability to modify the class at a later stage as it is just afterall a space.

Live test case: http://jsbin.com/obeji4/2/edit

Flagging for second review.

comment:3 Changed 9 years ago by addyosmani

Priority: majorlow

comment:4 Changed 9 years ago by paulelliott

This bug appears to be a duplicate of #5988. It was tested and fixed in the 1.4.2 release.

http://github.com/jquery/jquery/commit/e76ba32cebc26108e15b2e0e03c5152624c1bad9

comment:5 Changed 9 years ago by snover

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.