Hello Mark,

Nice to see this bug progressing. A search on keywords "
http://www.nabble.com/forum/Search.jtp?forum=15494&local=y&query=classname+space
classname space " in the Nabble jquery forum reveals that quite a few of us
have reported this in one form or another.

Cheers,

George


Mark D. Lincoln wrote:
> 
> I have found a couple of fixes for the problem of using toggleClass and
> removeClass in Internet Explorer (IE).  It seems the root of the problem
> is
> that when you have multiple classes assigned to the className property of
> an
> element in IE ("class1 class2") and you remove one of the classes from the
> className property, you can be left with a className property containing
> classes with leading spaces (" class2").  What is even worse, if you
> remove
> both classes multiple times, you can end up with the className property
> containing just blank spaces ("    ").  It is these leading spaces which
> are
> causing toggleClass and removeClass to fail with multiple classes assigned
> to the className property.  This problem does not seem to exist in Firefox
> since it seems to remove leading and trailing spaces when the className
> property is changed.
> 
>  
> 
> After doing some research, I have come up with two possible solutions. 
> The
> first solution involves modifying the regular expression used to remove
> the
> class from the className property.  On line 345 of the jQuery source code,
> you will find the following:
> 
>  
> 
> new RegExp("(^|\\s*\\b[^-])"+c+"($|\\b(?=[^-]))", "g"), "") ); 
> 
>  
> 
> Change the regular expression to the following:
> 
>  
> 
> new RegExp("(^\\s*\\b[^-]|)"+c+"($\\b(?=[^-])|)", "g"), "") ); 
> 
>  
> 
> Note the position of the pipe (|) characters.  This solution will enable
> the
> removal of the specified class from the className property in IE, however,
> it does not solve the problem of the extra spaces.  Although the class
> being
> toggled or removed can now be found within the className property, the
> className property will continue to grow with extraneous blank spaces each
> time a class is removed.  The blank spaces do not seem to cause any short
> term problem, however, they might if the user uses the Web application for
> more than a short period.
> 
>  
> 
> The other solution is more of a sledgehammer approach as it involves
> removing the extraneous blank spaces from the className property anytime a
> class is removed.  This solution involves trimming the spaces from the
> className during the class removal.  On lines 343 to 345 of the jQuery
> source code you will see the following implementation of the "remove"
> method
> of the className property:
> 
>  
> 
> o.className = !c ? "" :
> 
>    o.className.replace(
> 
>       new RegExp("(^|\\s*\\b[^-])"+c+"($|\\b(?=[^-]))", "g"), "");
> 
>  
> 
> If you change this code to use the "trim" method of the jQuery class, you
> will have the following:
> 
>  
> 
> o.className = jQuery.trim( !c ? "" :
> 
>    o.className.replace(
> 
>       new RegExp("(^|\\s*\\b[^-])"+c+"($|\\b(?=[^-]))", "g"), "") );
> 
>  
> 
> This solution does not require changing the regular expression since the
> extraneous spaces will no longer appear within the className property. 
> This
> is the solution I am currently using, however, if someone has a better
> solution, please let me know.
> 
>  
> 
>  
> 
> Mark D. Lincoln
> 
>  
> 
> Mark D. Lincoln, Director of Research & Development
> 
> Eye On Solutions, LLC
> 
> (866) 253-9366x101
> 
> www.eyeonsolutions.com
> 
>  
> 
> 
> _______________________________________________
> jQuery mailing list
> discuss@jquery.com
> http://jquery.com/discuss/
> 
> 

-- 
View this message in context: 
http://www.nabble.com/toggleClass-and-removeClass-tf2313152.html#a6432990
Sent from the JQuery mailing list archive at Nabble.com.


_______________________________________________
jQuery mailing list
discuss@jquery.com
http://jquery.com/discuss/

Reply via email to