Aquí está la rápida y flaco de mi problema:

$("a").alternar(function() { /*función*/}, function() { /*función B*/});

Dentro de function A se muestra un formulario. Si el usuario complete correctamente el formulario, el formulario se oculta de nuevo, volviendo al estado original).

Dentro de function B la misma forma se oculta.

La teoría detrás de esto es que el usuario puede elegir mostrar el formulario y rellenarlo, o puede hacer clic de nuevo y tener la forma de volver a la clandestinidad.

Ahora mi pregunta es esta: en la actualidad, si el usuario rellena el formulario con éxito–y se esconde, el usuario tendría que hacer clic en el enlace dos veces antes de regresar a la alternancia de estado que muestra el formulario.

Es de todos modos mediante programación restablecer el interruptor de palanca a su estado inicial?

OriginalEl autor neezer | 2008-10-28

6 Comentarios

  1. 20

    jQuery tiene dos .toggle() métodos:

    .toggle()

    Alterna cada uno de los conjunto de igualada
    elementos. Si se muestra, alternar
    hace ocultos. Si están ocultos,
    alternar hace que se muestra.

    .alternar(par, impar)

    Alternar entre dos llamadas a la función de cada otro clic.

    En este caso, desea que la primera. Algo como esto debe hacer el truco:

    $("a").click(function() {
        $("#theForm").toggle();
    });
    El par/impar sintaxis es eliminado en jQuery 1.9. jquery.com/upgrade-guide/1.9

    OriginalEl autor foxy

  2. 35

    Usted puede comprobar el estado de la alternancia en jQuery mediante .is(":hidden"). Así que en el código básico de lo que he utilizado:

    $("#div_clicked").click(function() {
      if ($("#toggle_div").is(":hidden")) {
         //do this
      } else {
         //do that
    }
    }); # add missing closing
    Esta es la respuesta correcta.

    OriginalEl autor Nicky Vandevoorde

  3. 5

    Aquí es lo que he usado:

    $(document).ready(function() {
        $('#listing_position').click(function() {
    
        var div_form = $('#listing_position_input');
            if (div_form.hasClass('hide')) {
               div_form.removeClass('hide');
            } else {
              div_form.addClass('hide');
            }
        });  
    });
    Esta fue la única cosa que trabajó para mí de forma fiable.
    si usted sólo quiere ser la alternancia de esa clase, hay una .toggleClass() método

    OriginalEl autor Michal Zuber

  4. 2

    Ahh, es de las cosas simples de la vida…

    Yo estaba usando la última definición de toggle(even,odd);, pero me había olvidado de incluir en mi descripción original de el problema de que mi segunda función cambio de era no sólo ocultar el formulario, pero la destrucción es así.

    function A: Ajax carga el formulario en un anexa div. Ocultar y destruir el div en una exitosa forma de post.

    function B: Destruir la div.

    Que tanto me recordó que toggle(); sólo se ocupa de la propiedad de CSS, y como tal no es muy apto para esta tarea. Pero luego me di cuenta de que yo era innecesariamente volver a cargar el formulario en cada uno de los «impares» estado destruyendo cuando estaba hecho, así que finalmente me vino esto:

    $("link").click(function() { 
    if ($(this).hermanos".formulario-div").longitud == 0) { 
    //no es un formulario de carga; carga y mostrar el formulario; ocultar cuando se hace 
    } 
    else { 
    $(this).hermanos".formulario-div").toggle(); 
    } 
    });

    …que hace lo que yo quiero hacer. Gracias por dar me directamente sobre toggle();!

    OriginalEl autor neezer

  5. 2

    Fue con este para evitar el adicional ocultar/mostrar la clase.
    Creo que esto es más flexible que la de foxy solución, ya que puede añadir más funciones dentro, pero no me fijé en que soy un noob

    $("#clickie").click(function(){
      if ( $("#mydiv").css("display") == "none" ){
         $("#mydiv").show();
           } else {
            $("#mydiv").hide();
    }

    OriginalEl autor xiatica

  6. -2
    $("#div_clicked").click(function() {
      if ($("#toggle_div").is(":visible")) {
         //do this
      } else {
         //do that
    }

    Reemplazar oculto con visible

    todo lo que hice fue copiar otra respuesta y ni siquiera se copia correctamente.

    OriginalEl autor Vishal Patel

Dejar respuesta

Please enter your comment!
Please enter your name here