2010-12-31 25 views
7

me disculpo de antemano si se trata de una simple pregunta, tengo este código javascript:jQuery mostrando div y luego desaparecer

$(document).ready(function() { 
    $("#results").hide(); 

    var html = $.ajax({ url: "ajax.php?db_list=get", async: false}).responseText; 

    $("#submit").click(function() { 
     $("#results").show(); 
    }); 
}); 

Tengo un botón que se parece esto:

<fieldset class="action"> 
     <button name="submit" id="submit">Submit</button> 
</fieldset> 

Cuando Hago clic en el botón Enviar. Quería mostrar los resultados div y mantenerlos allí, pero en Chrome aparece y luego desaparece de inmediato, ¿esto se debe a la función hide() en la parte superior de mi documento?

Gracias!

Respuesta

15

... ¿es esto debido a la función hide() en la parte superior de mi documento listo?

Probably. Supongo que la página es refrescante. Si no lo desea, use return false; en el controlador.

$("#submit").click(function() { 
    $("#results").show(); 
    return false; 
}); 

o event.preventDefault().

$("#submit").click(function (event) { 
    $("#results").show(); 
    event.preventDefault(); 
}); 
+0

Sí, gracias, este fue el problema, devolver falso mantiene el div abierto, –

+1

Gracias, devolver falso hizo el truco para mí (mi div se mostraría muy rápido, luego ocultar ... Estaba usando alternar ()). ¿Por qué es esto y por qué devuelve falso corregir esto? – DnfD

1

¿Sus resultados inicialmente establecido que se oculta a través de CSS

/* CSS */ 
#results { 
    display: none; 
} 

No sé por qué usted está saltando en torno a la forma en que debe utilizar $ .ajax. Use $ .get si es una solicitud GET ... Enlace con .live porque es mejor :). Que sea asíncrona, ya que no desea que el servidor colgando en caso de un error ...

$(document).ready(function() { 
    $('#submit').live('click', function(){ 
    $.get('ajax.php?db_list=get', function(data){ 
     $('#results').html(data); 
     $('#results').show(); 
     return false; 
    }); 
    }); 
}); 
+0

Esto realmente no es una situación donde '.live()' debería ser utilizado. Para un solo controlador en un solo elemento que está disponible en la carga de la página, debe enlazar directamente. – user113716

+0

la forma en que leí la pregunta, pensé que estaba cargando este contenido en otra página a través de ajax, en cuyo caso .live es necesario – sethvargo

+0

Ah, ya veo. Personalmente, todavía no usaría 'live()' en esa situación, pero sería un enfoque. Tu respuesta tiene más sentido para mí ahora. : o) – user113716

-1

En lugar de enviar, utilizar este código

<input id='submitMe' type = 'button' value = 'Submit Me' /> 

Ahora usted no tiene que falso retorno; o event.preventDefault(); en su javascript

+0

Incidentalmente, '' "ha sido reemplazado en HTML5 por el elemento'

Cuestiones relacionadas