2012-01-10 96 views
13

Vamos dice que tengo:¿Cómo obtener un nombre de imagen usando jQuery?

<img src='static/images/banner/blue.jpg' /> 

Usando jQuery, ¿cómo podría obtener los datos blue?

Si uso $('img').attr('src'), puedo obtener el URI completo. En ese caso, ¿cuál es la mejor manera de eliminar la extensión y todo el camino?

Respuesta

22

Hay un par de errores aquí: los archivos locales pueden usar la otra barra inclinada ('\') en el nombre de ruta, y algunos nombres de archivos pueden tener hash o colas de búsqueda definidas, o no tener una extensión.

String.prototype.filename=function(extension){ 
    var s= this.replace(/\\/g, '/'); 
    s= s.substring(s.lastIndexOf('/')+ 1); 
    return extension? s.replace(/[?#].+$/, ''): s.split('.')[0]; 
} 

console.log($('img').attr('src').filename()); 
9

expresión regular será su mejor amigo aquí ...

var filename = fullUri.replace(/^.*?([^\/]+)\..+?$/, '$1');

+0

@ gracias RokoC.Buljan, fijo ahora. – KOGI

+0

Ahora es perfecto, te olvidaste de escapar '/', debería ser '(/^.*?([^\/]+)\..+?$/, '$ 1');' –

6
var src = $('img').attr('src').split('/'); 
var file = src[src.length - 1]; 

deben trabajar

+2

claramente te olvidaste deshacerse de la extensión ... –

1
var src= $('img').attr('src'); 

var name = src.match(/static\/images\/banner\/(.*)\.jpg/)[1]; 
7

Sólo dividir la cadena:

var src = $('img').attr('src'); // "static/images/banner/blue.jpg" 
var tarr = src.split('/');  // ["static","images","banner","blue.jpg"] 
var file = tarr[tarr.length-1]; // "blue.jpg" 
var data = file.split('.')[0]; // "blue" 
+1

Sólo una nota al margen que este ejemplo devolverá, por ejemplo: 'verano' de una imagen llamada' summer.2013.jpg' –

2
src = $('img').attr('src'); 
src_array = src.split('/'); 
src = src_array[src.length-1]; 
3

Digamos que tenemos:

<img src="path/to/awesome/image/foobar.jpg" /> 

Aquí es lo que hacemos para extraer el nombre del archivo:

Array.prototype.filename = function() { 
    var tmp = this.split('/'); 
    return tmp[tmp.length-1].match(/(.*)\.[\w]+$/)[1]; 
}); 

$('img').attr('src').filename(); 

Resultado:

console.log(name); // foobar 
+0

** No sugeriría eso **: qué en el caso de 'summer.2013.jpg' ?? el nombre de archivo no es 'verano' sino' verano.2013' –

+0

@ RokoC.Buljan ¡Pregunta anterior, sin embargo, actualizada! – daryl

Cuestiones relacionadas