2010-03-23 12 views
10

Estoy tratando de llamar a la función jQuery text() y ejecutarla a través de la función trim() para eliminar todos los espacios en blanco finales y principales. Parece funcionar bien en Firefox, sin embargo, no funciona en IE7 (se niega a eliminar un espacio al final).La función de recorte jQuery no funciona en IE7?

¿Alguna idea ?! Tal vez una solución de expresiones regulares?

+0

¿Puede mostrar una demostración? – SLaks

Respuesta

5

Así que aquí está la esencia de lo que estaba pasando. Tenía un texto en un elemento de tramo y después de ese texto había un hipervínculo/imagen en el que el usuario podía hacer clic para eliminar el texto de la línea en la que se encontraba (ver código a continuación). Sin embargo, puse un   después del texto del elemento span (en el texto del hipervínculo) para poner un poco de relleno entre el texto span y la imagen "eliminar". ¡Así que, aunque estaba accediendo al texto del elemento y recortando $.trim($(this).parent().text());, todavía incluiría ese espacio al final! Una vez que eliminé este espacio adicional, las cosas funcionaron bien. Todavía no tengo idea de por qué $.trim() no se ocuparía de eso?

<div> 
    <span> 
    <strong>SomeText</strong> 
    </span> 
    <a href="javascript:void(0);" onclick="removeMe();">&nbsp; 
    <img src="delete.png" width="15" height="15" border="0" name="imgRemove" /> 
    </a> 
</div> 
+3

tu nombre de usuario es soooooooooooooooooooooooooooooooooooooo ofensivo –

+0

no funciona, porque '$ .trim' busca espacios en blanco reales que no incluyen'   'que es un espacio codificado que no frena, en cuanto a'. trim' le preocupa que piense que es solo otro texto como 'Home' o' Tom & jerry 'espero que ayude – Val

0

Sí, tengo una idea. El espacio en blanco al final no está en el elemento al que está llamando su función de texto(). Esto puede ocurrir en IE porque trata los espacios en blanco de manera diferente que Firefox, y le dará sus propios elementos, mientras que Firefox no. Esto es sólo una corazonada, porque tu pregunta no da mucho para seguir.

+1

Esto no tiene sentido. Es una cadena simple: el origen del espacio en blanco es irrelevante. – SLaks

+0

no, no tendría sentido si trim no funcionó en una cadena, es una expresión regular simple, debería funcionar. – mkoryak

+0

Creo que un texto devuelve una cadena, no los nodos/elementos a los que hace referencia, a menos que haya utilizado html en lugar de texto jaja la respuesta es irrelevante – Val

21

que más probablemente han olvidado de chainning jQuery ...

prueba este

$('#selector').trim($('#selector').text())

no seas perezoso con

$('#selector').text().trim();//this is wrong...

EDITAR

o como @Laserson ha simplificado aún mejor, con $.trim($(selector).text());

+0

Si selecciono incorrectamente, ¿podría explicar por qué esto funcionaría en Firefox, pero no en IE? – YourMomzThaBomb

+0

tal vez deba actualizar su respuesta con un ejemplo de la secuencia de comandos, fue solo una sugerencia, en cuanto a su problema ie7 ... o usar una instrucción if con un substr (-1,1) para verificar si la última letra es una espacio en blanco – Val

+7

Más fácil: $ .trim() – Laserson

0

jQuery utiliza/^ \ s + | \ s +/g en su ajuste de método-

Cualquier espacio al final tendría que ser añadido después de que vuelve .

Puede depender de cuándo lo lea; intente alertar el valor directamente desde la operación de recorte. Si eso se lee correctamente, el espacio se agrega por lo que sea que haga al lado de la cadena.

Si el ajuste realmente regresa con un espacio al final, use text.replace (/^\ s + | \ s +/g, '').

Cuestiones relacionadas