Twitter Bootstrap cssクラスのjQuery show()が非表示


89

私はTwitterのブートストラップを使用していると私はjQueryのことがわかりshow()またはfadeIn()クラスでマークされたDOM要素を作成しませんhiddenjQueryの機能のみを取り除くため、表示されるdisplay: none仕様に。ただし、visibilityはまだに設定されていhiddenます。

これを回避するための最良の方法は何ですか?

  1. hidden要素のクラスを削除します
  2. 可視性プロパティを変更する
  3. 自分のCSSで隠しクラスを上書きする

特に、jQueryまたはcssでこれを修正する方が良いかどうか、およびその理由を知りたいです。


私は通常、{visibility:hidden}を使用しません。それは、DOM内に要素を残してスペースを占めるためです。そうする必要がある理由はありますか?
isherwood 2013年

1
@isherwood visibility: hiddenはブートストラップ対応です。
Lim H.

回答:


124

あなたが探しているCSSクラスはです.collapse。これは要素をdisplay: none;

したがって、使用$('#myelement').show()は適切に機能します。

更新: ブートストラップv3.3.6は.collapseを次のように更新しました:

.collapse {
  display: none;
}

2
これは受け入れられる答えになるはずです。それはまたで動作し.slideDown().fadeIn()など、.hiddenあなたが表示されたくないもののためであるブートストラップに。
snumpy 2014

ブートストラップ3の新機能ですか?
リムH.

いいえ-ドキュメントで使用されているのを見ました。<div class = "nav-collapse collapse">この行は、v2.3.2の例から取られました。
Eoinii 2014

33
残念ながら、この答えは、もはやブートストラップ3と連携し.collapse、今もセットvisibility: hidden;
Tom17

9
Bootstrap 3で動作しますか?
James McCormack

21

これにより、目に見えない要素がフェードインし、クラスが削除されます

$('#element.hidden').css('visibility','visible').hide().fadeIn().removeClass('hidden');

http://jsfiddle.net/7qxVL/

要素を非表示にする必要がない場合(つまり、スペースを占有する場合)は、.hiddenを再定義する必要があります(ローカルのCSSでは、ブートストラップソースを変更しないでください。ローカルのLESSファイルでも変更しないでください)。


ありがとうございました!私は単純に:: fadeIn()。removeClass( 'hidden')-cssを直接操作したり非表示にする必要はありません。
dbrin 2013

1
@IrishJokerが投稿した回答をご覧ください。.hiddenJavaScriptを使用して表示する要素には使用しないでください。.collapse代わりに使用してください。
snumpy 2014

13

警告:

bootstrap 3.3.0が.collapseを次のように変更しました:

.collapse {
  display: none;
  visibility: hidden;
}

これは、jQuery.show()の重大な変更であり、インラインに戻す必要がありました。

<div class="alert alert-danger" style="display:none;" >
</div>      

次のようにjQueryを引き続き使用するには:

$('.alert').html("Change a few things up and try submitting again.").show()

ブートストラップ3.3.0で「display:none」だけを適用できる唯一のクラスは、

.navbar {
  display: none;
}

1
Bootstrapがこれを行う正当な理由がわかりません。私は個人的に常に別のcssファイルを持っています。これはcss設定の「上書き」に使用されます。.collapseを置き換えて、表示設定だけを使用します。これにより、すべてが壊れることを心配せずに先に進むことができます。メッセージの痛み:(
Eoinii 2014年

ブートストラップ3.3.xの中の溶液を使用することです.collapse('hide')し、.collapse('show')代わりにjQueryのメソッドの。collapse(非表示にする)またはcollapse in(表示する)クラスを使用して、HTMLで直接初期表示を設定できます。getbootstrap.com/javascript/#collapseを参照してください。
alexw

最新バージョン3.3.6はこの変更を元に戻しました
Eoinii

5

私も同じ問題を抱えていました。私はこのパッチを使用しました:

$(function() {
  $('.hidden').hide().removeClass('hidden');
});

次に、アプリケーションが新しい要素を生成して追加/追加するため、別の問題が発生しました。私がやったことは、私が行う新しい要素を生成した後です:

var newEl = ...;
$(newEl).find('.hidden').hide().removeClass('hidden');

4

私にとってそれは、ブートストラップが!importantクラスの非表示と非表示の両方にハックを使用しているためでした。

したがってshow()、jqueryで提供されるetcメソッドを使用することはできません。代わりに、さらに恐ろしいコードを上書きして、ハッキングしたコードを上書きする必要があります。

$('#myelement').attr('style', 'display: block !important');

!importantは最後の手段であり、実際にはブートストラップのようなコアライブラリでは使用しないでください。


4

これは機能しますが、最初の答えを試し、クラスをに変更します.collapse

.toggleClass('hidden')
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.