2010-03-23 9 views
10

Sto provando a chiamare la funzione jQuery text() ed eseguirla attraverso la funzione trim() per rimuovere tutti gli spazi bianchi finali e iniziali. Sembra funzionare bene in Firefox, tuttavia, non funziona in IE7 (si rifiuta di rimuovere uno spazio finale alla fine).jQuery funzione di assetto non funziona in IE7?

Qualche idea ?! Forse una soluzione regex?

+0

Puoi mostrare una demo? – SLaks

risposta

5

Quindi ecco il succo di ciò che stava succedendo. Avevo del testo in un elemento di span e dopo quel testo c'era un collegamento ipertestuale/immagine che l'utente poteva cliccare per rimuovere il testo dalla linea in cui si trovava (vedi il codice sotto). Tuttavia, ho inserito uno   dopo il testo dell'elemento span (nel testo del collegamento ipertestuale) per mettere un po 'di padding tra il testo di span e l'immagine "delete". Quindi, anche se stavo accedendo al testo e al taglio dell'elemento $.trim($(this).parent().text());, questo includerebbe comunque quello spazio alla fine! Una volta rimosso questo spazio in più, le cose hanno funzionato bene. Ancora nessuna idea del perché $.trim() non ci penserebbe comunque ?!

<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

il tuo nome utente è soooooooooooooooooooooooooooooooooooooo offensivo –

+0

non funziona, perché '$ .trim' cerca spazi bianchi reali che non includono'   'che è uno spazio non frenato codificato, per quanto riguarda'. trim' è preoccupato, pensa che sia solo un altro testo come 'Home' o' Tom & jerry "spero che sia d'aiuto – Val

0

Sì, ho un'idea. Lo spazio bianco alla fine non si trova nell'elemento su cui si sta chiamando la funzione text(). Questo può accadere in IE perché tratta gli spazi in modo diverso da Firefox, e gli darà i propri elementi, dove come Firefox non lo farà. Questo è solo un sospetto, perché la tua domanda non dà molto da fare.

+1

Questo non ha senso. È una stringa semplice: l'origine dello spazio bianco è irrilevante. – SLaks

+0

no, non avrebbe senso se Trim non funzionasse su una stringa, è una semplice espressione regolare, dovrebbe funzionare. – mkoryak

+0

penso che un testo ritorni una stringa non i nodi/elementi a cui ti riferisci a meno che non abbia usato html invece di testo lol la risposta è irrilevante – Val

21

che più probabilmente hanno dimenticato jquery chainning ...

provare questo

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

non essere pigro con

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

EDIT

o come @Laserson ha semplificato ancora migliore, con $.trim($(selector).text());

+0

Se stavo selezionando in modo errato, spiegherebbe perché questo funzionerebbe in Firefox, ma non in IE? – YourMomzThaBomb

+0

forse dovresti aggiornare la tua risposta con un esempio dello script, era solo un suggerimento, per quanto riguarda il problema ie7 ... o usare un'istruzione if con un substr (-1,1) per verificare se l'ultima lettera è un white space – Val

+7

Più facile: $ .trim() – Laserson

0

jquery usa/^ \ s + | \ s +/g nel suo assetto metodo-

Qualsiasi spazio finale dovrebbe essere aggiunto dopo ritorna .

Può dipendere dal momento in cui viene letto- provare ad avvisare il valore direttamente dall'operazione di assetto. Se ciò viene letto correttamente, lo spazio viene aggiunto da qualsiasi operazione eseguita accanto alla stringa.

Se il trim restituisce realmente uno spazio finale, utilizzare text.replace (/^\ s + | \ s +/g, '').

Problemi correlati