2010-12-31 16 views
7

mi scuso in anticipo se questa è una domanda semplice, ho questo codice JavaScript:jQuery che mostra div e poi sparire

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

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

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

Ho un pulsante che assomiglia a questo:

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

Quando Clicco sul pulsante Invia. Volevo mostrare i risultati div e mantenerli lì, ma in Chrome si apre e poi scompare immediatamente, è questo a causa della funzione hide() nella parte superiore del mio documento pronta?

Grazie!

risposta

15

... è ciò a causa della funzione hide() nella parte superiore del mio documento pronta?

Probabilmente. Sto indovinando che la pagina è rinfrescante. Se non lo desideri, utilizza return false; nel gestore.

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

o event.preventDefault().

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

Sì, grazie, questo è stato il problema, restituisce false mantiene il div aperto, –

+1

Grazie, return false ha fatto il trucco per me (il mio div lo avrebbe mostrato molto rapidamente, quindi nascondere ... Stavo usando l'interruttore ()). Perché questo e perché restituisce il falso risolve questo? – DnfD

1

avere i vostri risultati inizialmente impostato per essere nascosto tramite CSS

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

Non certo perché si stanno saltando tutto il modo in cui si dovrebbe usare $ .ajax. Usa $ .get se si tratta di una richiesta GET ... Lega con .live perché è meglio :). Avvenga asincrona, perché non si desidera che il server sospeso in caso di errore ...

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

Questa non è una situazione in cui dovrebbe essere usato '.live()'. Per un singolo gestore su un singolo elemento disponibile per il caricamento della pagina, è necessario eseguire il binding direttamente. – user113716

+0

il modo in cui ho letto la domanda, ho pensato che stava caricando questo contenuto su un'altra pagina via Ajax, nel qual caso .live è necessario – sethvargo

+0

Ah, vedo ora. Personalmente non userò ancora 'live()' in quella situazione, ma sarebbe un approccio. La tua risposta ha più senso per me ora. : o) – user113716

-1

Invece di presentare, utilizzare questo codice

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

Ora non c'è bisogno di restituisce falso; o event.preventDefault(); nel tuo javascript

+0

Per inciso, '' "è stato sostituito in HTML5 dall'elemento'