jQuery show () for Twitter Bootstrap css class hidden


89

Twitter Bootstrap을 사용하고 있으며 jQuery 함수가 사양 만 제거하기 때문에 jQuery show()또는 fadeIn()클래스로 표시된 DOM 요소가 hidden나타나지 않도록합니다 display: none. 그러나이 visibility여전히로 설정되어 hidden있습니다.

이 문제를 해결하는 가장 좋은 방법은 무엇일까요?

  1. hidden요소 에서 클래스 제거
  2. 가시성 속성 변경
  3. 내 CSS에 숨겨진 클래스 덮어 쓰기

특히, 이것을 jQuery 또는 CSS로 수정하는 것이 더 나은지 그리고 그 이유를 알고 싶습니다.


일반적으로 {visibility : hidden}을 사용하지 않습니다. DOM의 요소가 공간을 차지하도록 남겨두기 때문입니다. 그렇게해야하는 이유가 있습니까?
isherwood

1
@isherwood visibility: hidden는 부트 스트랩에서 응답합니다.
Lim H.

답변:


124

찾고있는 CSS 클래스는 .collapse입니다. 이것은 요소를display: none;

따라서 사용 $('#myelement').show()하면 제대로 작동합니다.

업데이트 : Bootstrap v3.3.6은 .collapse를 다음으로 업데이트했습니다.

.collapse {
  display: none;
}

2
이것은 받아 들여진 대답이어야합니다. 또한 작동 .slideDown(), .fadeIn().hidden이 표시되지 않도록하려면 물건을위한 부트 스트랩있다.
snumpy 2014-08-13

부트 스트랩 3의 새로운 기능입니까?
Lim H.

아니오-문서에서 사용하는 것을 본 적이 있습니다. <div class = "nav-collapse collapse">이 줄은 v2.3.2 예제에서 가져온 것입니다.
Eoinii 2014-08-15

33
안타깝게도이 답변은 Boostrap 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-07-30

1
@IrishJoker가 게시 한 답변을 참조하십시오. .hidden자바 스크립트를 사용하여 표시하려는 요소에 사용해서는 안됩니다 . .collapse대신 사용하십시오 .
snumpy 2014-08-13

14

경고:

부트 스트랩 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
부트 스트랩이이 작업을 수행하는 좋은 이유를 알 수 없습니다. 저는 개인적으로 항상 CSS 설정을 '재정의'하는 데 사용되는 또 다른 CSS 파일을 가지고 있습니다. 이렇게하면 모든 것이 깨질 염려없이 앞으로 나아갈 수 있습니다. 메시지의 고통 :(
Eoinii

부트 스트랩 3.3.x는의 솔루션을 사용하는 것입니다 .collapse('hide').collapse('show')대신 jQuery의 방법. collapse(숨기기) 또는 collapse in(표시) 클래스를 통해 HTML에서 직접 초기 가시성을 설정할 수 있습니다 . getbootstrap.com/javascript/#collapse를 참조하십시오 .
alexw apr

최신 버전 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.