2009-12-16 20 views
5

Estoy tratando de escribir una sentencia if donde si uno de los elementos tiene su pantalla establecida en "ninguno", quiero que el elemento padre también muestre "ninguno" ...jquery - cómo establecer el atributo principal?

Este es el código I ' estoy tratando, que no funciona ...

/* tried this first */ 
if($('#prevx a').attr('display') == 'none') { 
    $(this).parent().attr('display','none'); 
} 

/* and then this */ 
if($('#prevxa > a').attr('display') == 'none') { 
    $('#prevxa').attr('display','none'); 
} 

El marcado se parece a esto:

<ul> 
    <li class="navnext" id="nextxa"> 
     <a id="nextx" href="#"><img src="/images/next.png"/></a> 
    </li> 

    <li class="navprev" id="prevxa"> 
     <a id="prevx" href="#" style="display: none;"><img src="/images/previous.png"/></a> 
    </li> 
</ul> 

Respuesta

8

Prueba esto:

if($('#prevx').css('display') == 'none') { 
    $('#prevx').parent().css('display','none'); 
} 

Mejor aún:

$('#prevx').parent().css('display',$('#prevx').css('display')); 

Este ejemplo funciona para mí. Para ocultar/mostrar la matriz, alternar la visualización del niño entre ninguna y en línea:

<ul> 
    <li class="navnext" id="nextxa"> 
     <a id="nextx" href="#"><img src="/images/next.png"/></a> 
    </li> 

    <li class="navprev" id="prevxa"> 
     <a id="prevx" href="#" style="display: inline;"><img src="/images/previous.png"/></a> 
    </li> 
</ul> 

<script> 
if ($('#prevx').css('display') == 'none') 
    $('#prevx').parent().css('display', 'none'); 
else 
    $('#prevx').parent().css('display', 'list-item'); 
</script> 
+0

Hmm ... pegado el código exactamente como lo tienes aquí, y no funcionó ... también probé:. if ($ ('# prevx') css ('display') == 'none') { $ ('# prevxa'). css ('display', 'none'); } y tampoco funcionó (?) – n00b0101

+0

Actualicé la respuesta con un nuevo fragmento de código; podría querer intentar ajustar el 'if ... else' en un bloque' $ (document) .ready() ' . – leepowers

+0

¡Ah, vale, muchas gracias! – n00b0101

0

.attr se utiliza para las etiquetas, tales como identificador, título, alt, src, etc.

.css se utiliza para Estilos CSS como visualización, fuente, decoración de texto: parpadeo, etc.

La solución de Pygorex1 debería ser la solución.

0
if($('#prevx a').css('display') === 'none') { 
    $(this).parent().css('display','none'); 
} 
0

De los ejemplos de código, que ya tiene un ID para el padre, ¿por qué no usarlo?

Además, hay muchas otras maneras de hacer esto (envolver las siguientes líneas dentro de un $(document).ready(function(){...})) para hacer que funcionen:

El uso de un :hidden selector (esto sólo ocultará):

if ($('#prevx').is(':hidden')) $('#prevxa').hide(); 

Uso un ternary operator (esto va a ocultar o mostrar la matriz)

var showOrHide = ($('#prevx').is(':hidden')) ? 'none' : ''; 
$('#prevxa').css('display', showOrHide); 

jQuery utiliza algunos atajos:

  • :hidden encontrará objetos que están ocultos (o están configurados para mostrar: ninguno). No tiene que estar dentro de un .is() tampoco. Puede usar esto: $('div:hidden').show() para revelar todos los divs escondidos.
  • :visible encontrará objetos que no están ocultos (display = '', 'inline', 'block', etc)
  • $(element).hide(), se oculta un elemento (conjuntos de presentación en Ninguno)
  • $(element).show() mostrará un elemento (borra el valor de visualización)
Cuestiones relacionadas