Jquery .show () nie ujawnia elementu div z widocznością ukrytego


81

Podstawowe pytanie jQuery:

Próbuję ujawnić div , który został oznaczony jako ukryty za pomocą jQuery. Ale nie do końca rozumiem

Utworzyłem tutaj JSFiddle: http://jsfiddle.net/VwjxJ/

Zasadniczo chcę użyć style="visibility: hidden;"zamiaststyle="display: none;" tak, jak chcę, aby zachować przestrzeń ukrytego elementu

Próbowałem, używając show(), fadeIn()etc, ale nie praca (robią dlastyle="display: none;" )

Co ja robię źle?


6
Spróbuj zmienić framework na swoim jsfiddle na jQuery.
— a'r

1
@ a'r: Problem nadal występuje . Oto poprawiona wersja: jsfiddle.net/fkling/9Z6nt/19
— Felix Kling

W swoim przykładzie nie skonfigurowałeś odpowiedniej biblioteki dla swojego projektu, w "Wybierz framework" powinieneś wybrać "jQuery".
— megas

5
+1, aby przeciwdziałać głosom przeciw .... ludzie powinni spędzać więcej czasu próbując zrozumieć problem ...
— Felix Kling

5
Myślę, że to dlatego, że inni ludzie myśleli, że po prostu zapomniałeś wybrać odpowiednią bibliotekę (a po jej zmianie wydawało się, że działa). Ale nie przeczytali uważnie twojego pytania i kodu. Z jakiego innego powodu pierwszy komentarz otrzymałby 5 głosów za? Tak, może twój jsfiddle nie był poprawny, ale to nie jest powód do negatywnych głosów imo. Problem był jasny nawet bez tego (i był łatwy do naprawienia).
— Felix Kling

Odpowiedzi:


123

Jeśli ukryłeś to za pomocą visibility:hidden, możesz to pokazać za pomocą jQuery przez

$(".Deposit").css('visibility', 'visible');

A na skrzypcach brakuje jQuery. Oto demo: http://jsfiddle.net/9Z6nt/20/


document.readyto nie jest konieczne. Kod jest uruchamiany onLoad(selectbox nad frameworkami).
— Felix Kling

Och, nie zauważyłem tego, dzięki. Ale będzie pomocny w prawdziwym kodzie, jeśli JS zostanie wywołany zanim DOM będzie gotowy.
— Muhammad Usman

1
@Imray To robi. To nie jest rozwiązanie visibility:hidden, naprawiłem tylko jego.
— Muhammad Usman

11

Według dokumentacji JQuery .show()„jest mniej więcej równoważne z wywołaniem .css('display', 'block'), z tym wyjątkiem, że właściwość display jest przywracana do stanu, w jakim była początkowo”. Zamiast tego ustaw styl jawnie. Możesz użyć klasy CSS

.hidden{
    visibility: hidden;
}
.shown{
    visibility: visible;
}

i zestaw używa

$("#yourdiv").removeClass("hidden").addClass("shown");

$("#yourdiv").toggleClass('hidden'); nie ma potrzeby udziału w "pokazanej" klasie
— Alexander Bird

1
To nie jest dokładnie to samo. Zależy to od możliwych bardziej ogólnych nadpisań w innych częściach CSS, ale zwykle prawdopodobnie uszłoby to na sucho, tak.
— Polymorphix

7

Jeśli chcesz zachować przestrzeń ukrytego elementu, użyj krycia.

to znaczy:

$('div').fadeTo(500,1) //show
$('div').fadeTo(500,0) //hide

na przykład:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div style='opacity:0'>
  Test opacity
</div>


<button onclick="$('div').fadeTo(500,1);">Show</button>
<button onclick="$('div').fadeTo(500,0);">Hide</button>


3

Hej człowieku, twoje skrzypce pracują, po prostu wybierz framework jQuery na skrzypcach. Jeśli jego widoczność jest ukryta, zmień właściwość widoczności css na widoczną.

(".Deposit").css('visibility','visible');


2

No to ruszamy :)

$(".Deposit").show();

    $(".Deposit").fadeOut(500,function(){
        $(this).css({"display":"block","visibility":"hidden"});

    });

tak, to jest bilet!
— Kirby

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.