2009-09-14 19 views
9

Tengo un error en IE8 cuando intento obtener una propiedad de css para un elemento con imagen de fondo.Error jQuery CSS en IE8

el.css({ 'background-position': "10px 10px"}); //set some 
alert(el.css("background-position")); //get the value 

En Opera, FF, Chrome, Safari funciona obtengo "10px 10px". No en IE8 donde no estoy definido. Abrí un bug report, pero hasta entonces, ¿cuál crees que será una buena solución a este problema? ¿Cómo debería obtener estos valores de alguna otra manera?

+0

Para la posteridad: http://bugs.jquery.com/ticket/4295 es el principal informe de errores para este problema. Al momento de escribir esto, está configurado como "bienvenida de parche", pero no hay solución. Los usuarios tendrán que probar el navegador cruzado para cualquier propiedad CSS agrupada como esta. – Blazemonger

Respuesta

8

this uld ayuda.

se vincula a jquery ticket 2462 que también es interesante

Editar primer vínculo roto, wayback machine al rescate.

Y, en caso de que archive.org se empaquete, aquí está el contenido de la publicación de blog dextrose.

jQuery (al menos hasta hasta la versión 1.2.6) tiene un problema con Internet Explorer cuando pidiendo el fondo-posición de un objeto.

$('h1:first').css('background-position'); 

En los otros navegadores de categoría A, se obtiene 2 valores (en px o%) que representan, respectivamente, la posición X y la posición Y del elemento . En Internet Explorer (6 y 7) no se define. El problema es que IE no sabe qué posición de fondo es, solo conoce 2 otras llamadas: background-position-x y background-position-y. Aquí está una porción de código JavaScript para manejar este problema.

(function($) { 
    jQuery.fn.backgroundPosition = function() { 
    var p = $(this).css('background-position'); 
    if(typeof(p) === 'undefined') 
     return $(this).css('background-position-x') 
       + ' ' + $(this).css('background-position-y'); 
    else return p; 
    }; 
})(jQuery); 

Ahora puede utilizar este plugin jQuery para obtener el background-position de un elemento:

$('h1:first').backgroundPosition(); 
+0

el enlace de dextrosa estaba bien y funciona. Buena sugerencia. Gracias. –

+2

El primer enlace está muerto –

+0

Este es el problema al escribir respuestas rápidas con solo enlaces: si el enlace caduca, la respuesta se vuelve útil. – Arkana

1

Si alerta a la propiedad de fondo, también obtendrá el puesto. Una muy mala solución, pero el primero que se me ocurrió ...

alert(el.css("background")); //url(some/url/to/image.jpg) no-repeat 10px 10px 

Y entonces tendría que acaba de obtener los valores numéricos que son seguidos por "px"

+0

No puede predecir que la unidad será un píxel en sí. – rahul

+0

técnicamente esto debería funcionar pero no porque la propiedad se configuró con la función css y no se agrega al CSS real sino que se inserta dinámicamente en el atributo de estilo –

4

nunca he intentado esto pero he encontrado que al solicitar los puestos de forma individual u obtener un resultado, por lo que:

alert(el.css("background-position-y")); //get the y value 
alert(el.css("background-position-x")); //get the x value 

entonces usted puede combinar los dos sho :)

+0

este funciona en IE, Safari, Chrome pero no en FF :( –

1

finalmente voy a analizar desde:

alert(el.attr('style')); // this seems to work in all browsers