Эквивалент jQuery .hide () для установки видимости: скрыто - PullRequest
319 голосов
/ 08 марта 2012

В jQuery есть методы .hide() и .show(), которые устанавливают настройку CSS display: none.

Существует ли эквивалентная функция, которая установит настройку visibility: hidden?

Я знаю, что могу использовать .css(), но я предпочитаю какую-то функцию, например .hide() или около того.Спасибо.

Ответы [ 6 ]

399 голосов
/ 08 марта 2012

Вы можете сделать свои собственные плагины.

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

Если вы хотите перегрузить оригинальный jQuery toggle(), который я не рекомендую ...

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

98 голосов
/ 08 марта 2012

Нет встроенного, но вы можете написать свой довольно легко:

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

Затем вы можете назвать это так:

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

Вот рабочий пример .

53 голосов
/ 31 января 2013

Еще более простой способ сделать это - использовать метод 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");
    });
});
24 голосов
/ 28 октября 2012

Если вам нужен только стандартный функционал hide только с видимостью: hidden, чтобы сохранить текущий макет, вы можете использовать функцию обратного вызова hide, чтобы изменить css в теге. Скрыть документы в jquery

Пример:

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

При этом будет использоваться обычная классная анимация, чтобы скрыть div, но после завершения анимации вы устанавливаете видимость наскрыто и отображается для блокировки.

Пример: http://jsfiddle.net/bTkKG/1/

Я знаю, что вам не нужно решение $ ("# aa"). css (), но вы не указали, если онопотому что, используя только метод css (), вы теряете анимацию.

1 голос
/ 30 июня 2018

Чистый JS эквивалент для 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

Мы используем return el из-за удовлетворения плавный интерфейс"шаблон дизайна».

Вот рабочий пример .


Ниже я также приведу ВЫСОКО не рекомендованную альтернативу, которая, однако, вероятноболее "близкий к вопросу" ответ:

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

конечно, это не реализует jQuery 'each' (задано в @ JamesAllardice answer), потому что здесь мы используем чистый js.

Рабочий пример: здесь .

0 голосов
/ 27 марта 2019

Вот одна реализация, которая работает как функция $.prop(name[,value]) или $.attr(name[,value]).Если переменная b заполнена, видимость устанавливается в соответствии с этим, и возвращается this (что позволяет продолжить работу с другими свойствами), в противном случае возвращается значение видимости.

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...