2010-03-23 6 views
10

J'essaie d'appeler la fonction jQuery text() et l'exécuter via la fonction trim() pour supprimer tous les espaces de fin et de début. Semble fonctionner très bien dans Firefox, cependant, ne fonctionne pas dans IE7 (refuse de supprimer un espace à la fin).La fonction jQuery trim ne fonctionne pas dans IE7?

Des idées ?! Peut-être une solution regex?

+0

Pouvez-vous montrer une démo? – SLaks

Répondre

5

Alors, voici l'essentiel de ce qui se passait. J'avais du texte dans un élément span et après ce texte il y avait un lien hypertexte/image sur lequel l'utilisateur pouvait cliquer pour retirer le texte de la ligne sur laquelle il était (voir le code ci-dessous). Cependant, j'avais placé un après le texte de l'élément span (dans le texte du lien hypertexte) pour mettre un peu de remplissage entre le texte du span et l'image "delete". Donc, même si j'accédais au texte de l'élément et le découpage $.trim($(this).parent().text()); il inclurait toujours cet espace à la fin! Une fois que j'ai supprimé cet espace supplémentaire, les choses ont bien fonctionné. Toujours aucune idée pourquoi $.trim() ne s'en occuperait pas ?!

<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

votre nom d'utilisateur est soooooooooooooooooooooooooooooo offensif –

+0

cela ne fonctionne pas, parce que '$ .trim' recherche des espaces blancs réels qui ne comprend pas'   'qui est un espace non-freinage codé, aussi loin que'. trim' est préoccupé, il pense que c'est juste un autre texte comme 'Home' ou' Tom & Jerry 'espère que cela aide – Val

0

Oui j'ai une idée. Les espaces à la fin ne sont pas dans l'élément sur lequel vous appelez votre fonction text(). Cela peut arriver dans IE car il traite les espaces différemment puis firefox, et lui donnera ses propres éléments, où firefox ne le fera pas. C'est juste une intuition, parce que votre question ne donne pas beaucoup à continuer.

+1

Cela n'a aucun sens. C'est une chaîne simple - l'origine de l'espace n'est pas pertinente. – SLaks

+0

non, il n'aurait pas de sens si la coupe ne fonctionne pas sur une chaîne, c'est une simple regex, cela devrait fonctionner. – mkoryak

+0

Je pense qu'un texte renvoie une chaîne pas les nœuds/éléments auxquels vous faites référence à moins qu'il ait utilisé html au lieu du texte lol la réponse est non pertinente – Val

21

vous avez probablement oublié jquery chainning ...

essayer cette

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

ne soyez pas paresseux avec

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

EDIT

ou @Laserson a simplifié encore mieux, avec $.trim($(selector).text());

+0

Si je sélectionnais incorrectement, cela expliquerait pourquoi cela fonctionnerait dans Firefox, mais pas dans IE? – YourMomzThaBomb

+0

peut-être vous devriez mettre à jour votre réponse avec un exemple du script, c'était seulement une suggestion, quant à votre problème ie7 ... ou utiliser une instruction if avec un substr (-1,1) pour vérifier si la dernière lettre est un espace blanc – Val

+7

Plus facile: $ .trim() – Laserson

0

jquery utilise/^ \ s + | \ s +/g dans son assiette méthodolo-

Tout espace de fuite devrait être ajouté après il retourne .

Cela peut dépendre du moment où vous l'avez lu - essayez d'alerter la valeur directement à partir de l'opération de rognage. Si cela se lit correctement, l'espace est ajouté par tout ce que vous faites à côté de la chaîne.

Si l'assiette retourne vraiment avec un espace de fin, utilisez text.replace (/^\ s + | \ s +/g, '').

Questions connexes