Seleccionar elemento por ID y atributo CSS
Frecuentes
Visto 110 veces
1
A través de CSS configuré todos los divs para visibility :hidden
. Al hacer clic en el elemento en la barra de navegación, quiero que el div de destino se establezca en visibility :visible
. Esto funciona bien, pero quiero evitar configurarlo nuevamente si ya está visible.
Este código no funciona
function showNewElement(actID) {
ID = actID.substring(1, actID.length);
$('.mainDiv:visible').css("visibility", "hidden");
$("#" + ID + ':hidden').css("visibility", "visible").hide().fadeIn('fast');
}
Así que tuve que envolverlo en una declaración if
function showNewElement(actID) {
var ID = actID.substring(1, actID.length);
if ($("#" + ID).css("visibility") != "visible") {
$('.mainDiv').css("visibility", "hidden");
$("#" + ID).css("visibility", "visible").hide().fadeIn('fast');
}
}
¿Por qué no funciona al revés?
3 Respuestas
2
Desde jQuery - :selector visible
Los elementos se consideran visibles si ocupan espacio en el documento.
Los elementos con visibilidad: ocultos u opacidad: 0 se consideran visibles, ya que aún consumen espacio en el diseño.
Entonces, aunque no puedes ver los elementos, no están en el :visible
conjunto.
Lo que puedes hacer en su lugar, es usar display: none
en mainDiv
elementos. Entonces se considerará invisible.
.mainDiv {
display: none;
}
y luego cambie el jQuery a solo
function showNewElement(actID) {
ID = actID.substring(1, actID.length);
$('.mainDiv:visible').hide();
$("#" + ID + ':hidden').fadeIn();
}
Ver modificado JSFiddle
Respondido el 02 de diciembre de 13 a las 08:12
0
Escribir:
function showNewElement(actID) {
ID = actID.substring(1, actID.length);
if ($("#" + ID).css("visibility") == "hidden"){
$(".mainDiv:visible").css("visibility", "hidden");
$("#" + ID).css("visibility", "visible");
}
}
Respondido el 02 de diciembre de 13 a las 08:12
0
Funciona si cambias:
$("#" + ID + ':hidden').css("visibility", "visible").hide().fadeIn('fast');
A:
$("#" + ID).css("visibility", "visible").hide().fadeIn('fast');
Respondido el 02 de diciembre de 13 a las 08:12
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas jquery css jquery-selectors or haz tu propia pregunta.
De hecho, quería que funcionara el de 2 líneas porque, lógicamente, parece correcto, pero no funciona. Quiero entender por qué ;) - el nuez