2011-01-19 17 views
10

In uno script jQuery ho la riga di codice che ottiene la stringa di URL corrente:controllo JQuery e rimuovere barra dalla fine dell'URL leggere

var target = $(this).attr('href'); 

Può il codice in questo controllo script se c'è un barra alla fine della stringa dell'URL. Se è presente, rimuoverlo? Qual è il modo di farlo, potresti raccomandare?

+2

Solo così siamo chiari: "/" è una * barra *, e "\" è una * barra rovesciata * – Pointy

+0

Grazie! Corretto. – rem

risposta

22

farei questo:

target = target.replace(/\/$/, ''); 

Ora, se avete bisogno di preoccuparsi per la presenza di una stringa di query:

<a href='http://foo.bar.com/something/?param=xyz'>hi</a> 

allora le cose diventano un po 'più complicato. È probabile che l'analisi di un URL con un'espressione regolare sia possibile, ma è piuttosto complicato. Se riesci a farla franca, restringi le possibilità di come possono apparire i tuoi URL in modo da non dover utilizzare un grande schema "ufficiale" enorme.

+1

Ancora meglio, continua lo stile della catena jQuery e fai 'var target = $ (this) .attr ('href'). Replace (/ \/$ /, '');' –

+0

@Martin Jespersen yes nel codice effettivo che è (probabilmente) quello che farei, ma volevo che l'esempio fosse molto chiaro in termini di "buona" parte. – Pointy

+0

come posso rimuovere la barra dall'inizio di un testo? – ARUN

2

Supponendo che si intende una barra, una possibile soluzione potrebbe essere:

var l = target.length - 1; 
if(target.lastIndexOf('/') === l) { 
    target = target.substring(0, l); 
} 
4

Questo dovrebbe essere sicuro per gli URL con stringhe di query, nonché, e non usare un'espressione regolare ....

var urlEnd = target.indexOf("?"); 
if(urlEnd == -1){ 
    urlEnd = target.length; 
} 

// Don't bother doing anything if the URL is empty 
if (urlEnd > 0){ 
    if (target[urlEnd - 1] == "/"){ 
     $(this).attr('href', target.substr(0, urlEnd-1) + target.substr(urlEnd)); 
    }  
} 
0

è possibile farlo con una regex come:

target.replace |; (// + ((\ #) *) $ /, '$ 1'?.?)

Quale dovrebbe conservare stringhe di query o frammenti di URL alla fine dell'URL.

Problemi correlati