Lo necesito así que cuando hago clic en un div de la clase 'mydiv', todos los divs de esa clase tienen un índice z de 1, excepto el div he hecho clic en el que como un índice z de 2.jQuery - Cambiar css para todos los divs de una clase excepto 'esto'
al hacer clic en el div de nuevo tiene que cambiar su índice z de nuevo a 1.
hasta ahora he llegado con lo siguiente:
$('.mydiv').toggle(function() {
$('.mydiv').css('z-index','1');
$(this).css('z-index','2');
}, function() {
$(this).css('z-index','1');
});
Si hace clic en un div y luego vuelve a hacer clic en él (devolviendo el índice z a 1) antes de hacer clic en otro, funciona bien.
Sin embargo, si hace clic en un div y luego hace clic en otro sin hacer clic en el primero (para alternarlo a z-index 1), a veces funciona y otras veces no funciona. Im suponiendo que el problema está en la primera parte de mi código, porque esto:
$('.mydiv').css('z-index','1');
no siempre se ejecuta antes de esto:
$(this).css('z-index','2');
es que el problema y si es así, ¿cómo puedo solucionar este problema? Gracias
ACTUALIZACIÓN - Disculpa por no pensar en esto inicialmente, pero he simplificado mi pregunta aquí, la página real tendrá que tener animaciones de posicionamiento css. Entonces, cuando haces clic en un div, se mueve con una animación suave. Creo que eso significa que no puedo cambiar el CSS pasando una clase. Gracias
-
Actualización 2 - pensé que tenía este trabajo, y luego probado en IE8 e IE9 7. está bien (junto con cualquier otro navegador que probé con) pero IE7 e IE8 hacer que todos las imágenes saltan cuando haces clic en cualquiera de ellas. Aquí está la demostración (todo el css y jQuery están dentro de la página):
http://smartpeopletalkfast.co.uk/jquery/basicDemo12-bugfix-3.htm
Y aquí está el jQuery:
$(".image-div").click(function() {
var divRefTwo = $(".image-div").not(this);
$(".image-div").not(this).animate({
width: '250px',
left: '0px',
marginRight: '0px',
backgroundPosition: '-125px'
}, 400, function() {
$(divRefTwo).css('z-index','1');
});
if ($(this).css('z-index') == 1) {
$(this).css('z-index','2');
$(this).animate({
width: '500px',
left: '-125px',
marginRight: '-250px',
backgroundPosition: '0px'
}, 500, function() {
//
});
}
else {
var divRef = this;
$(this).animate({
width: '250px',
left: '0px',
marginRight: '0px',
backgroundPosition: '-125px'
}, 500, function() {
$(divRef).css('z-index','1');
});
}
});
pienso qué está sucediendo es la siguiente: La posición de la imagen de fondo para div .image-div comienza a -125px. Cuando haces clic en div.image-div, jQuery anima la posición de fondo para todos los otros divs de la misma clase a -125px. Solo los divs que se expanden deben cambiar, ya que los otros divs ya tienen una posición de fondo de -125px.
Por alguna razón, IE restablece la posición de fondo a 0, y luego la anima a -125px. Entonces, la animación termina en el lugar correcto, pero se anima para obtener su cuando no debería.
¿Alguna idea de por qué sucede esto? ¿Es esto un error de IE de jQuery o una jerarquía de CSS de selectores? Gracias
Esto no hace lo que quiere OP. No está manejando este caso: "Al hacer clic en el div otra vez, debe cambiar su índice z de nuevo a 1." – Kon
Gracias pontándolo, actualicé mi código. –
Gracias por su respuesta @ErickPetru. Me temo que no mencioné la funcionalidad completa que necesito. He actualizado mi pregunta. Gracias – Evans