Odpowiednik jQuery.hide () aby ustawić widoczność: hidden

W jQuery istnieją metody .hide() i .show(), które ustawiają ustawienie CSS display: none.

Czy istnieje równoważna funkcja, która ustawiłaby ustawienie visibility: hidden?

Wiem, że mogę używać .css(), ale wolę jakąś funkcję jak .hide() lub tak. Dzięki.

Author: TMS, 2012-03-08

5 answers

Możesz tworzyć własne wtyczki.

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

Jeśli chcesz przeciążyć oryginalny jQuery toggle(), którego nie polecam...

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

 382
Author: alex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-18 11:15:21

Nie ma takiego wbudowanego, ale można by całkiem łatwo napisać własny:

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

Możesz to nazwać tak:

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

Oto działający przykład .

 94
Author: James Allardice,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-08 08:22:20

Jeszcze prostszym sposobem na to jest użycie metody jQuery 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");
    });
});
 48
Author: Chaya Cooper,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-20 13:47:11

Jeśli potrzebujesz tylko standardowej funkcjonalności hide only with visibility: hidden, aby zachować aktualny układ, możesz użyć funkcji zwrotnej hide, aby zmienić css w tagu. Hide docs in jquery

Przykład:

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

Spowoduje to użycie normalnej chłodnej animacji do ukrycia div, ale po zakończeniu animacji ustawisz widoczność na ukrytą, a wyświetlanie na zablokowaną.

Przykład: http://jsfiddle.net/bTkKG/1/

I know you didnt want $("#aa").rozwiązanie css (), ale nie podałeś, czy jest, ponieważ używając tylko metody css() tracisz animację.

 21
Author: h3ct0r,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-27 20:24:04

Pure js odpowiednik dla jQuery hide () / show ():

function hide(el) {
    el.style.visibility = 'hidden';    
    return el;
}

function show(el) {
    el.style.visibility = 'visible';    
    return el;
}

hide(document.querySelector(".test"));
// hide($('.test')[0])   // usage with jQuery

Używamy return el ze względu na spełnianie fluent interface "desing pattern".

Oto przykład roboczy .


Poniżej zamieszczam również wysoce niezalecane alternatywa, która jest jednak prawdopodobnie bardziej "bliska pytania" ODPOWIEDŹ:

HTMLElement.prototype.hide = function() {
    this.style.visibility = 'hidden';  
    return this;
}

HTMLElement.prototype.show = function() {
    this.style.visibility = 'visible';  
    return this;
}

document.querySelector(".test1").hide();
// $('.test1')[0].hide();   // usage with jQuery

Oczywiście nie jest to implementacja jQuery 'each' (podana w odpowiedzi @JamesAllardice), ponieważ używamy czystego js tutaj.

Przykład roboczy to tutaj .

 0
Author: Kamil Kiełczewski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-30 09:48:54