366 votes

L'équivalent de jQuery .hide() pour définir visibility: hidden

En jQuery, il y a .hide() et .show() méthodes qui définit le CSS display: none réglage.

Est-il une fonction équivalente qui serait mis de l' visibility: hidden ?

Je sais que je peux utiliser .css() mais je préfère que certaines fonctions comme la .hide() . Merci.

451voto

alex Points 186293

Vous pourriez faire vos propres plugins.

jQuery.fn.visible = function() {
    return this.css('visibility', 'visible');
};

jQuery.fn.invisible = function() {
    return this.css('visibility', 'hidden');
};

jQuery.fn.visibilityToggle = function() {
    return this.css('visibility', function(i, visibility) {
        return (visibility == 'visible') ? 'hidden' : 'visible';
    });
};

Si vous voulez surcharger l'original jQuery toggle(), que je ne recommande pas...

!(function($) {
    var toggle = $.fn.toggle;
    $.fn.toggle = function() {
        var args = $.makeArray(arguments),
            lastArg = args.pop();

        if (lastArg == 'visibility') {
            return this.visibilityToggle();
        }

        return toggle.apply(this, arguments);
    };
})(jQuery);

jsFiddle.

112voto

James Allardice Points 81162

Il n'y a pas un construit dans, mais vous pouvez écrire votre propre assez facilement:

(function($) {
    $.fn.invisible = function() {
        return this.each(function() {
            $(this).css("visibility", "hidden");
        });
    };
    $.fn.visible = function() {
        return this.each(function() {
            $(this).css("visibility", "visible");
        });
    };
}(jQuery));

Vous pouvez ensuite appeler cela de la sorte:

$("#someElem").invisible();
$("#someOther").visible();

Voici un exemple de travail.

58voto

Chaya Cooper Points 945

Un moyen encore plus simple pour faire cela est d'utiliser du jQuery toggleClass() la méthode

CSS

.newClass{visibility: hidden}

HTML

<a href="#" class=trigger>Trigger Element </a>
<div class="hidden_element">Some Content</div>

JS

$(document).ready(function(){
    $(".trigger").click(function(){
        $(".hidden_element").toggleClass("newClass");
    });
});

26voto

user886869 Points 107

Si vous avez seulement besoin de la fonctionnalité standard de masquer uniquement avec visibility:hidden pour garder la mise en page actuelle, vous pouvez utiliser la fonction de rappel de cacher à modifier les règles css dans la balise. Masquer les docs en jquery

Un exemple :

$('#subs_selection_box').fadeOut('slow', function() {
      $(this).css({"visibility":"hidden"});
      $(this).css({"display":"block"});
});

Cela permettra d'utiliser la normale cool d'animation pour cacher la div, mais après l'animation de finition vous définissez la visibilité de caché et d'un écran pour le bloc.

Un exemple : http://jsfiddle.net/bTkKG/1/

Je sais que tu ne voulais pas le $("#aa").(css) de la solution, mais vous n'avez pas précisé si c'était parce que en utilisant uniquement les css() la méthode que vous perdez de l'animation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X