2009-05-08 13 views
8

Estoy usando este código para obtener la imagen de fondo de div.Obteniendo una imagen de fondo de div con jQuery. ¿Hay algún método incorporado para eliminar la porción url()?

var bgImage = $('#content').css('backgroundImage'); 

Esto está volviendo url%28http://example.com/images/layout/content-trans.png%29

Sé que puede hacer element.height() para conseguir la altura de un elemento sin el px anexa (parseInt() también funciona), así que me preguntaba si había un método similar para jQuery para obtener el imagen de fondo real menos los metadatos url().

Supongo que podría usar una expresión regular, algo así como /url\((.*)\)/, pero prefiero saber primero si hay una forma incorporada.

Respuesta

17

url() es parte del valor de background-image, así que supongo que debe usar regex replace.

var bgImage = $('#content').css('background-image').replace(/^url|[\(\)]/g, ''); 

Ref: http://groups.google.com/group/jquery-en/browse_thread/thread/d866997cb206b35f

+0

¡Regex es entonces! ¡Gracias! +1 – alex

+0

Impresionante, necesitaba esto para una clase de mootools. Gracias. –

+0

A veces habrá "o" adjunto, por lo tanto, agregar/^ url | [\ (\) \ "\ ']/g podría ayudar ... –

0

Algo así como:

var imgUrl = 'http://example.com/images/layout/image.png'; 
var i = imgUrl.lastIndexOf("/"); 
var filename = imgUrl.substring(i, imgUrl.length - 1); 
alert(filename); 

En términos JS puros

+0

Tal vez me falta algo, pero ¿el archivo' string filename' es legal en JavaScript? – alex

+0

@alex - jeje, no. Guau, se olvidó de este :) – karim79

0

¿qué hay de esta solución fácil:

bgImage.slice(bgImage.lastIndexOf('/')+1, bgImage.length - 3) 
Cuestiones relacionadas