Tengo este script jquery que suponga para mostrar/ocultar el elemento div base en el hipervínculo que se hace clic. No sé por qué, pero no funciona en todos. La siguiente es la excepción de mi código.

function hide_current_commoncontainer(commoncontainer){
   $(commoncontainer).each(function(){
 if(this.is(":visible")){this.hide();} 
 });
}

function init(){
$("#compose_link").bind("click",function(){
 hide_current_commoncontainer(".pmcommoncontainer");
 ("#composer").show();  
 return false;
 }
);

if(Drupal.jsEnabled){  
 $(document).ready(init);
} 

He de identificar la causa y se encontró que se trata de mostrar/ocultar la función que no está funcionando. El resto – la función de llamadas – están bien. ¿Alguien puede decirme donde estoy haciendo mal? Donde debo modificar mi código para mostrar/ocultar el elemento div como la manera en que yo quería.

OriginalEl autor Andrew | 2010-02-24

6 Comentarios

  1. 5

    Que te estás perdiendo el $ antes de ("#composer").show(); y this

    No debería ser $("#composer").show(); y $(this)? También, asegúrese de que usted ha tirado en las definiciones de show/hide

    en realidad, no es signo $ antes («#compositor») en el código real. Creo que fue eliminado accidentalmente cuando puedo editar el post. Estaba teniendo un tiempo difícil cuando traté de luz de alta el código cuz soy nuevo en este foro. De todos modos, he añadido el signo $ a «esto» y no ocultar el elemento pero todavía $(«#compositor»).show() no muestra compositor elemento. En una nota de lado, debo decir woow super rápida respuesta. Nunca experimentan este tipo de respuesta rápida en cualquier otro foro. gracias por la respuesta.
    Esta forma funciona debido a los logros – si ves una respuesta que ayuda, hasta ‘votar’ y si puedo encontrar una respuesta que lo marca como la respuesta. Por favor, hacer su parte para mantener tan sensible. Thx.

    OriginalEl autor psychotik

  2. 10

    Ok me enteré de por qué $(«#compositor»).show() no está funcionando. Es porque me rígida la visibilidad estilo de los divs «oculto» y jquery «mostrar» el método no se puede revertir. Extrañamente, como opuesto a «mostrar» método «ocultar» puede volver hard-coded «visible» estilo sin problema. Así que, para ocultar/mostrar elementos como la intención, tendría que usar ocultar/mostrar el método combinado sin ninguna visibilidad estilo de codificación disco duro o utilizar método css de jquery y establecer la visibilidad de estilo como el deseo.

    Cometió el mismo error. Aplausos por tu comentario!

    OriginalEl autor Andrew

  3. 4

    Te sugiero que hacer algo como

    $(function() {
        $('#compose_link').click(function(e) { 
            $('.pmcommoncontainer').children(':visible').hide();
            $('#composer').show();
            e.preventDefault();
        });
    });

    Que se mostrará el elemento con el id del compositor, y ocultar todo lo visible niño los elementos de la clase pmcommoncontainer cuando el elemento con el id compose_link se hace clic.

    Creo que esto es lo que quieres hacer – no hay necesidad de repetir como jQuery funciona con los juegos :).

    EDITAR

    Parece que también quería que el haga clic en o posterior a ser detenido con eventos puede utilizar el preventDefault() función para detener ese comportamiento.

    +1: me gusta tu solución un poco mejor que simplemente fixing la muestra…
    No estoy seguro de lo que estás tratando de decir en la última línea, pero, sólo para darle un poco de escenario, tengo un montón de enlaces en mi página y cada enlace se mostrará correspondiente div que tiene elementos secundarios en ella, en el mismo lugar. Y, en el camino, supongo que para ocultar el div que ya está en la pantalla antes de que se muestra la correspondiente div. Así, con el fin de hacer eso, también debo ocultar/mostrar en el elemento secundario o sería suficiente para mostrar/ocultar el div padre solo.
    Ok, me acabo de adaptar la mina a su código y todavía compositor elemento no se muestra. :confuso:

    OriginalEl autor Khanzor

  4. 2

    Creo que hay un par de áreas que necesitan ser ajustados en el código de ejemplo.

    REEMPLAZAR

    ("#composer").show();  

    CON

    $("#composer").show();  


    REEMPLAZAR

    if(this.is(":visible")){this.hide();} 

    CON

    if($(this).is(":visible")){$(this).hide();} 
    Hice añadir el signo $ delante de este y que parte no funciona ahora. Pero, como para el compositor elemento, fue un error en el código publicados sólo(eliminado accidentalmente durante la edición), la real tiene. Por lo tanto muestran todavía no funciona.

    OriginalEl autor RSolberg

  5. 1

    jQuery show() y hide() métodos no funcionan en el CSS de la visibilidad del atributo. El efecto se puede lograr mediante el uso de css() de la función en su lugar.

    Cambiar su código para

    $(#composer).css('visibility', 'visible');

    Y

    if($(this).is(":visible")){$(this).css('visibility', 'hidden');}

    OriginalEl autor barefootcoder

  6. 0

    lugar de this, usted tiene que utilizar $(this) para jquery objetos.

    Yeap lo he añadido y no ocultar el elemento que quería ocultar, pero todavía $(«#compositor»).show() no funciona.

    OriginalEl autor helloandre

Dejar respuesta

Please enter your comment!
Please enter your name here