395 Stimmen

Äquivalent zu jQuery .hide() zum Einstellen der Sichtbarkeit: hidden

In jQuery gibt es .hide() et .show() Methoden, die das CSS einstellen display: none Umgebung.

Gibt es eine gleichwertige Funktion, die die visibility: hidden Einstellung?

Ich weiß, ich kann die .css() aber ich bevorzuge eine Funktion wie .hide() oder so. Danke.

468voto

alex Punkte 457905

Sie können Ihre eigenen Plugins erstellen.

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';
    });
};

Wenn Sie das Original jQuery überladen wollen toggle() was ich nicht empfehle...

!(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 .

119voto

James Allardice Punkte 161987

Es gibt zwar keine eingebaute Funktion, aber Sie können ganz einfach eine eigene schreiben:

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

Sie können dies dann wie folgt aufrufen:

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

Hier ist ein Arbeitsbeispiel .

61voto

Chaya Cooper Punkte 2510

Eine noch einfachere Möglichkeit, dies zu tun, ist die Verwendung der jQuery-Funktion toggleClass() 方法

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");
    });
});

27voto

h3ct0r Punkte 705

Wenn Sie nur die Standardfunktionalität von hide only mit visibility:hidden benötigen, um das aktuelle Layout beizubehalten, können Sie die Callback-Funktion von hide verwenden, um das CSS im Tag zu ändern. Docs in jquery ausblenden

Ein Beispiel:

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

Dies wird die normale coole Animation verwenden, um das Div zu verstecken, aber nach der Animation beenden Sie die Sichtbarkeit auf versteckt und Anzeige zu blockieren.

Ein Beispiel: http://jsfiddle.net/bTkKG/1/

Ich weiß, dass Sie die $("#aa").css()-Lösung nicht wollten, aber Sie haben nicht angegeben, ob es daran lag, dass Sie nur die css()-Methode verwenden und die Animation verlieren.

3voto

Teet Kalm Punkte 23

Hier ist eine Implementierung, die wie folgt funktioniert $.prop(name[,value]) o $.attr(name[,value]) Funktion. Wenn b gefüllt ist, wird die Sichtbarkeit dementsprechend eingestellt und this zurückgegeben wird (so dass mit anderen Eigenschaften fortgefahren werden kann), andernfalls wird der Wert für die Sichtbarkeit zurückgegeben.

jQuery.fn.visible = function (b) {
    if(b === undefined)
        return this.css('visibility')=="visible";
    else {
        this.css('visibility', b? 'visible' : 'hidden');
        return this;
    }
}

$("#result").visible(true).on('click',someFunction);
if($("#result").visible())
    do_something;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X