JQueryには、CSSのdisplay: none
設定を設定する.hide()
メソッドと.show()
メソッドがあります。
visibility: hidden
設定を設定する同等の機能はありますか?
私は私が.css()
を使うことができることを知っています、しかし私は.hide()
のようないくつかの機能を好む。ありがとう。
あなたはあなた自身のプラグインを作ることができます。
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 。
組み込まれたものはありませんが、あなたは非常に簡単にあなた自身のものを書くことができます:
(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() methodを使うことです。
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の標準機能だけが必要な場合は、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
流暢なインターフェース "desingパターン"を満たすために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
もちろんここでは純粋なjsを使用しているので、これはjQuery 'each'( @JamesAllardice answerで指定)を実装していません。
実用的な例は ここ です。
これが$.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;