2012-03-08 11 views
284

jQueryには、.hide().show()というメソッドがあり、CSS display: noneの設定を行います。可視性を設定するjQuery .hide()と同等です:hidden

visibility: hiddenの設定に相当する機能はありますか?

私は.css()を使うことができますが、私は.hide()程度の機能が好きです。ありがとう。

+2

使用することです.toggle()に – zerkms

+0

私はjQueryのtoggleClass()メソッドのファンです。http://jqueryui.com/toggleClass/下記の私の答えで共有している例をチェックしてください。http://stackoverflow.com/a/ 14632687/1056713 –

答えて

364

独自のプラグインを作成できます。

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

+1

アレックス、ありがとう。代わりに '.toggle()'関数を使用できますか? – TMS

+0

@Tomas他のスクリプトを壊す可能性のある 'toggle()'をシャドーする必要があります。必要に応じて、 'toggle()'に余分な引数を追加して、 'visibility'と' display'のどちらを切り替えるべきかを指定することができます。しかし、私は最後の例でカスタムのものを使っています。 :) – alex

+0

'show'(速度、イージング、コールバック)の追加パラメータをサポートする方法の例を投稿できますか? – georg

89

は内蔵の1ありませんが、あなたはあなた自身の非常に簡単に書くことができます:

(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(); 

をここでworking exampleです。

+16

+1 '.each'は必要ありません:http://jsfiddle.net/nGhjQ/2/。 – pimvdb

+1

良い点、ちょうど癖の力。ありがとう。アレックスの答えに+1! –

+0

'(function($){...}(jQuery));'ラッパーでこれらの2つの関数をラップする際のポイントは何ですか?以前はjQueryで独自の関数を定義していませんでした。 – VoidKing

19

現在のレイアウトを維持するためにvisibility:hiddenでhideの標準機能のみが必要な場合は、hideのコールバック関数を使用してタグのCSSを変更できます。 Hide docs in jquery

例:

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

これはdiv要素を非表示にするには、通常のクールなアニメーションを使用しますが、アニメーション終了後には、隠されたに可視性を設定し、ブロックするように表示します。

例:。 http://jsfiddle.net/bTkKG/1/

のみCSSを使用しているので(私はあなたが$(「#のAA」)、CSS()ソリューションを望んでいませんでし知っているが、それがあったかどうかを指定しませんでした)方法あなたが失いますアニメーション。

48

これを行うにしても簡単な方法は、あなたがあなた自身のベースを実装することができます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"); 
    }); 
}); 
+1

私はこのアプローチが好きです。別のスタイルシートが必要なため自己完結型ではありませんが、スタイルシートにすべてのスタイル情報を所属させる必要があります。可視性を無効にしたい場合は、すべてのjsコードを変更するのではなく、1か所でCSSタグを変更することができます。 – vaughan

+17

ブートストラップを使用している場合、このクラスは不可視と呼ばれます。 – user239558

関連する問題