2011-01-19 22 views
10

En un script jQuery tengo la línea de código que obtiene la cadena de URL actual:cheque jQuery y quitar barra desde el final de la URL leer

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

Podría el código de este script de control si hay una barra al final de la cadena URL. Si está presente, ¿eliminarlo? ¿Cuál es la manera de hacerlo, usted podría recomendar?

+2

Así que estamos claros: "/" es una * barra inclinada *, y "\" es una * barra invertida * – Pointy

+0

¡Gracias! Corregido – rem

Respuesta

22

que haría esto:

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

Ahora bien, si usted necesita preocuparse acerca de la presencia de una cadena de consulta:

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

entonces las cosas se ponen un poco más complicado. Probablemente sea posible analizar una URL con una expresión regular, pero es bastante desordenado. Si puede salirse con la suya, reduzca las posibilidades de cómo se ven sus URL para que no tenga que usar un gran patrón "oficial" grande.

+1

Mejor aún, continúe con el estilo de la cadena jquery y haga 'var target = $ (this) .attr ('href'). Replace (/ \/$ /, '');' –

+0

@Martin Jespersen sí en el código real que es (probablemente) lo que haría, pero quería que el ejemplo fuera muy claro en términos de la parte "buena". – Pointy

+0

¿cómo puedo eliminar la barra desde el comienzo de un texto? – ARUN

2

Suponiendo que quiere decir una barra, una posible solución sería:

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

Esto debe ser seguro para las URL con cadenas de consulta, así, y no utilizar una expresión regular ....

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

puede hacerlo con una expresión regular como:

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

Que debería conservar cadenas de consulta o fragmentos de URL al final de la URL.

Cuestiones relacionadas