2010-12-31 13 views
7

przepraszam z wyprzedzeniem, jeśli jest to proste pytanie, mam ten kod javascript:jQuery pokazując div i następnie Znikające

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

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

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

Mam przycisk, który wygląda tak:

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

When Klikam przycisk Prześlij Chciałem pokazać wynik div i pozostawić go, ale w Chrome pojawia się on, a następnie natychmiast znika, czy jest to spowodowane funkcją hide() u góry mojego dokumentu?

Dzięki!

Odpowiedz

15

... Czy to z powodu funkcji hide() u góry mojego dokumentu gotowego?

Prawdopodobnie. Zgaduję, że strona jest odświeżająca. Jeśli nie chcesz tego, użyj return false; w module obsługi.

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

lub event.preventDefault().

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

Tak, dziękuję, to był problem, return false utrzymuje div otwarty, –

+1

Dziękuję, zwróć false zrobiłeś dla mnie sztuczkę (mój div pokazałby bardzo szybko, a potem chował ... Używałem przełączania ()). Dlaczego tak jest i dlaczego zwraca fałszywą poprawkę to? – DnfD

1

miec wyniki początkowo ustawiona na ukryte za pomocą CSS

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

Nie wiem, dlaczego jesteś skakali po drodze należy użyć $ .ajax. Użyj $ .get, jeśli jest to żądanie GET ... Binduj z .live, ponieważ jest lepsze :). Niech to będzie asynchroniczny, ponieważ nie chcesz, aby serwer wisi w przypadku błędu ...

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

To naprawdę nie jest sytuacja, w której powinno się używać '.live()'. W przypadku pojedynczego modułu obsługi pojedynczego elementu, który jest dostępny podczas ładowania strony, należy bezpośrednio powiązać. – user113716

+0

sposób, w jaki czytałem pytanie, myślałem, że ładował tę treść na inną stronę za pośrednictwem ajax, w takim przypadku .live jest koniecznością – sethvargo

+0

Ah, widzę teraz. Osobiście nadal nie używałbym 'live()' w tej sytuacji, ale byłoby to jedno podejście. Twoja odpowiedź ma dla mnie więcej sensu. : o) – user113716

-1

Zamiast przedstawienia, użyj tego kodu

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

Teraz nie trzeba return false; lub event.preventDefault(); w twoim javascriptie

+0

Nawiasem mówiąc, '' "zostało zastąpione w HTML5 przez element"