Эквивалент в jQuery.скрыть () для установки видимости: скрыто
в jQuery есть .hide()
и .show()
методы, которые устанавливают CSS display: none
настройка.
есть эквивалентная функция, которая установила бы visibility: hidden
настройки?
Я знаю, что могу использовать .css()
но я предпочитаю некоторые функции как .hide()
или так. Спасибо.
5 ответов:
вы можете сделать свои собственные плагины.
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);
там не один встроенный, но вы могли бы написать свой собственный довольно легко:
(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();
здесь пример работающего.
еще более простой способ сделать это-использовать 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"); }); });
Если вам нужна только стандартная функциональность hide only with visibility: 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 (), вы теряете анимацию.
чистый 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
из-за того, чтобы удовлетворить свободно интерфейс "desing pattern".здесь пример работающего.
ниже я также предоставляю крайне не рекомендуется альтернатива, которая, однако, вероятно, более "близка к вопросу" ответ:
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 ответ), потому что мы используем чистый js здесь.
рабочий пример здесь.