2010-12-31 6 views
7

ich vor der Zeit zu entschuldigen, wenn dies eine einfache Frage ist, ich habe diesen JavaScript-Code:jQuery div zeigt und dann Disappearing

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

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

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

Ich habe eine Schaltfläche, die so aussieht:

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

Wenn Ich klicke auf den Submit-Button Ich wollte das Ergebnis div anzeigen und habe es dort bleiben lassen, aber in Chrome erscheint es und verschwindet dann sofort, liegt das daran, dass die hide() -Funktion am oberen Rand meines Dokuments bereit ist?

Danke!

Antwort

15

... liegt das daran, dass die Funktion hide() oben in meinem Dokument bereit ist?

Wahrscheinlich. Ich schätze, die Seite ist erfrischend. Wenn Sie das nicht möchten, verwenden Sie return false; im Handler.

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

oder event.preventDefault().

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

Yep danke, das war das Problem, Rückkehr false hält die div öffnen, –

+1

Danke, Rückgabe false tat den Trick für mich (mein div würde sehr schnell zeigen, dann ausblenden ... Ich war mit Toggle ()). Warum ist das und warum gibt false fix das zurück? – DnfD

1

Haben Sie Ihre Ergebnisse anfänglich

über CSS versteckt werden
/* CSS */ 
#results { 
    display: none; 
} 

nicht sicher, warum Sie rund um die Art und Weise springen Sie $ Schnipsel verwenden sollten. Verwenden Sie $ .get, wenn es eine GET-Anfrage ist ... Binden Sie mit .Live, weil es besser ist :). Lassen Sie es async sein, weil Sie Ihren Server nicht im Falle eines Fehlers hängen ...

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

Dies ist wirklich keine Situation, in der '.live()' verwendet werden sollte. Für einen einzelnen Handler für ein einzelnes Element, das beim Laden der Seite verfügbar ist, sollten Sie direkt binden. – user113716

+0

die Art, wie ich die Frage gelesen habe, dachte ich, er lud diesen Inhalt auf eine andere Seite über Ajax, in diesem Fall .Live ist notwendig – sethvargo

+0

Ah, ich sehe jetzt. Ich persönlich würde immer noch nicht 'live()' in dieser Situation verwenden, aber es wäre ein Ansatz. Ihre Antwort macht jetzt mehr Sinn für mich. : o) – user113716

-1

Statt einreichen, verwenden Sie diesen Code

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

Jetzt haben Sie nicht zu falsch zurückgeben; oder event.preventDefault(); in Ihrem Javascript

+0

Übrigens, '' "wurde in HTML5 durch das'