Эквивалент jQuery.hide() для установки видимости: скрытый
В jQuery существуют методы .hide()
и .show()
, которые устанавливают настройку CSS display: none
.
Есть ли эквивалентная функция, которая установила бы настройку visibility: hidden
?
Я знаю, что могу использовать .css()
, но я предпочитаю некоторую функцию, например .hide()
или так. Спасибо.
Ответы
Ответ 1
Вы можете создавать свои собственные плагины.
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.
Ответ 2
Существует не один встроенный, но вы можете написать свой собственный довольно легко:
(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();
Здесь рабочий пример.
Ответ 3
Еще более простой способ сделать это - использовать 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");
});
});
Ответ 4
Если вам нужна только стандартная функциональность скрыть только с видимостью: скрытый, чтобы сохранить текущий макет, вы можете использовать функцию обратного вызова 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() вы теряете анимацию.
Ответ 5
Чистый эквивалент 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), потому что здесь мы используем чистый js.
Рабочий пример здесь.
Ответ 6
Здесь одна реализация, которая работает как $.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;