2011-11-07 12 views
15

Debido a circunstancias fuera de mi control, SharePoint, tengo el siguiente fragmento de código.Coincidencia de jquery .text() a  

var item = $('<span><font size=1>&nbsp;</font></span>').text() 

estoy tratando de comparar el valor .text() a &nbsp; y no saben qué hacer. Pasar por el código item parece ser igual a "", lo que tiene sentido. Pero haciendo item == " " devuelve falso. ¿Cómo debe hacerse esta comparación?

EDIT: Ejemplo violín

http://jsfiddle.net/hUBeP/2/

+0

¿Es en realidad [carácter 0xA0] (http://www.fileformat.info/info/unicode/char/a0/index.htm)? Pero creo que eso podría depender del navegador, no me gustaría confiar en eso. ¿Coincide con una expresión regular de espacio en blanco? – Rup

+0

Mira esto: http://stackoverflow.com/questions/5237989/nonbreaking-space – Samich

Respuesta

42

Prueba a revisar para '\xa0' (que es el personaje creado por &nbsp;):

var item = $("<span><font size=1>&nbsp;</font></span>").text(); 
alert("'" + item + "' " + (item == '\xa0')); 

http://jsfiddle.net/hUBeP/3/

+0

Esto lo hizo! @Rup: solo se ejecutará en IE, por lo que la dependencia del navegador no es realmente un problema. Aclamaciones. – anothershrubery

+0

Actualmente también funciona en Firefox, y probablemente también en otros navegadores. – ThiefMaster

+0

Sí, accidentalmente agregué el último comentario sin terminar. ¡Ahora actualizado! – anothershrubery

0

compararlo con &nbsp;, ya que es el contenido que quieres unir Parece que no es así porque el navegador representa como espacio, en lugar de caracteres. Si se compara con &nbsp;, se deben comparar dos conjuntos de &nbsp; s o dos espacios idénticos comparados.

+0

Bien técnicamente podría compararlo contra '$ ("

 

") .text()'. Pero la solución de ThiefMaster es mucho más limpia. – anothershrubery

+0

Estoy de acuerdo, especialmente porque no le preocupan los problemas de navegadores cruzados. – yoozer8