2011-09-14 21 views
5

¿Cómo puedo recortar todos los espacios de una cadena, incluso cuando son causadas por un espacio de no separación ( )jQuery trim no elimina  ?

Por ejemplo:

var foo = $.trim($('<p>&nbsp;foo&nbsp;</p>').text()); 

El valor de foo es " foo " en lugar de "foo"

ACTUALIZACIÓN Por lo tanto, el problema no era la función de recorte de jQuery. Funciona muy bien. El problema es la función de ajuste de MSAjax. jQuery, con razón, usa detección de funciones y, si no existen, usa su implementación.

Desafortunadamente, la implementación de recorte de MSAJax no despoja al chasis 160 (espacio sin ruptura). Sin embargo, el ajuste jQuery regex lo hace, ya que se da cuenta de que IE no incluye char 160 en \ s.

¿Por qué los problemas del navegador estúpido siempre terminan siendo un problema con la forma en que M $ implementa algo ???

+1

Funciona para mí: http://jsfiddle.net/uR9WA/ –

+0

Parece un error en 1.3.x - http://bugs.jquery.com/ticket/4980 –

Respuesta

3

Por lo tanto, el problema no era función de ajuste de jQuery. Funciona muy bien. El problema es la función de ajuste de MSAjax. jQuery, con razón, usa detección de funciones y, si no existen, usa su implementación.

Desafortunadamente, la implementación de recorte de MSAJax no despoja al chasis 160 (espacio sin ruptura). Sin embargo, el ajuste jQuery regex lo hace, ya que se da cuenta de que IE no incluye char 160 en \ s.

¿Por qué los estúpidos problemas del navegador siempre terminan siendo un problema con la forma en que M $ implementa algo?

+1

Dios odio IE ..... – Liam

+0

¿Hay alguna manera de eludir la implementación de M $ y forzar el recorte de jQuery? – jbyrd

1

¿Estás seguro de eso? Probé una versión ligeramente modificada de su fragmento de ahora:

var foo = $.trim($('<p>&nbsp;foo&nbsp;</p>').text()); 
alert('#' + foo + '#'); 

y no había espacios a ambos lados de la 'foo'. http://jsfiddle.net/Ux7Wc/

Este fue el uso de jQuery 1.6.2 de Firefox 5.

+0

Ya no estoy tan seguro ... .it no está funcionando en el código, y estoy mirando los valores en el depurador y esto es lo que parece estar sucediendo. Pero en jsfiddle no puedo replicar el problema – CaffGeek

+0

El problema es que el ajuste nativo de IEs (que jquery usa si existe) no elimina el carácter 160, que es lo que también se transforma nbsp – CaffGeek

+0

Corrección, no es ajuste nativo de IE, pero Función de recorte de MSAjax – CaffGeek