jQuery 및 CSS-제거 / 추가 디스플레이 : 없음


122

이 클래스에 div가 있습니다.

.news{
  width:710px; 
  float:left;
  border-bottom:1px #000000 solid;
  font-weight:bold;
  display:none;
}

그리고 일부 jQuery 메서드를 사용하여 해당 디스플레이를 제거하고 싶습니다. (그래서 div가 표시됩니다) 다시 추가하는 것보다 div가 음영 처리됩니다.

내가 어떻게 해? 건배


3
jQuery $(".news").show()? "그래서 div는 그림자가 될 것입니다"... 당신은 그것이 사라질 것이라는 뜻입니까 ??
JCOC611

그래 $(".news").show()작동합니다! 같은 $(".news").hide()!!! 감사합니다;)
markzzz

2
당신은 다음과 같이 한 문장으로 요약 할 수 있습니다$('.news').toggle();
Eli Gundry

답변:


208

숨기려면 div

$('.news').hide();

또는

$('.news').css('display','none');

그리고 보여주기 위해 div :

$('.news').show();

또는

$('.news').css('display','block');

2
$ ( '. news'). css ( 'display', 'block'); 나를 위해 일했습니다! 감사합니다 Shehal!
Jitesh Sojitra

'표시'스타일을 처음에 '차단'이 아닌 CSS에 설정된 것으로 재설정하려면 어떻게해야합니까?
ed22

73

jQuery는 다음을 제공합니다.

$(".news").hide();
$(".news").show();

그런 다음 요소를 쉽게 표시하고 숨길 수 있습니다.


38
문제는 .show()제거하지도 않고 제거하지도 않고 display: none대신 요소를 display: block넣거나 inline의존하며 요소가 비정상적인 display스타일을 사용하면 레이아웃이 깨질 수 있다는 것 입니다.
lolesque

@lolesque 나는 그 문제를 해결하기 위해 간단한 '해킹'을 발견했습니다. 단순히 element{display:none;}CSS에서 사용하지만 js에서도 동시에 사용 element.hide()하십시오. 이렇게하면 show()기능이 작동 할 수 있습니다.
Jarrod

16

그래서 샘플 코드를 제공하겠습니다.

<div class="news">
Blah, blah, blah. I'm hidden.
</div>

<a class="trigger">Hide/Show News</a>

링크는 클릭시 div를 표시하는 트리거가됩니다. 따라서 Javascript는 다음과 같습니다.

$('.trigger').click(function() {
   $('.news').toggle();
});

거의 항상 jQuery가 요소를 숨기고 표시하는 스타일을 처리하도록하는 것이 좋습니다.

편집 : 위의 사람들 이 .show.hide이것을 사용하도록 권장하는 것을 봅니다 . .toggle하나의 효과로 두 가지를 모두 수행 할 수 있습니다. 그래서 멋지다.


toggle기능 을 보여주는 것이 좋습니다 . 무언가를 클릭하여 표시해야하는 경우 여러 번 숨기는 기능도 원합니다.
user3267755 2014

16

JavaScript에서 :

getElementById("id").style.display = null;

jQuery에서 :

$("#id").css("display","");

나는 $ ( "# id"). css ( 'display', ''); 그것은 "디스플레이"에 대한 인라인 스타일을 제거에서 제대로 작동하도록
TrippinBilly

1
Me too @TrippinBill (Mac Firefox 43 사용)-수정 사항을 제출했습니다. 이것들은 CSS 속성을 뒤집는 것이 아니라 제거 하는 유일한 방법 인 것 같습니다 . 이를 통해 더 광범위한 CSS 할당에 의해 재정의 될 수 있지만 반대로 되돌릴 수는 없습니다.
Chris


8

요소를 표시 / 숨기기 위해 클래스를 추가하는 것이 좋습니다.

.hide { display:none; }

그런 다음 jquery의 .toggleClass () 를 사용 하여 요소를 표시하거나 숨 깁니다.

$(".news").toggleClass("hide");

7

jQuery의 css-api를 통해 인라인 "display : none"을 제거하는 유일한 방법은 빈 문자열로 재설정하는 것입니다 (null btw !! 작동하지 않음).

jQuery 문서에 따르면 이것은 한 번 설정된 인라인 스타일 속성을 "제거"하는 일반적인 방법입니다.

$("#mydiv").css("display","");

또는

$("#mydiv").css({display:""});

트릭을 제대로해야합니다.

IMHO에는 다른 인라인 스타일 속성을 설정하는 대신 위에서 설명한대로 표시 값을 적절하게 설정 해제하는 "숨기기 해제"또는 "공개"라고 할 수있는 jQuery에 누락 된 메서드가 있습니다. 또는 hide()초기 인라인 값을 저장하고 show()복원해야 할 수도 있습니다.



5

많은 정보를 제공하지는 않지만 일반적으로 이것이 해결책이 될 수 있습니다.

$("div.news").css("display", "block");

다른 어떤 정보가 필요합니까? 간단한 질문이라고 생각합니다. 어쨌든, 난 사용하여 해결 $(".news").show()$(".news").hide())
markzzz

한 가지 불명예스러운 질문은 페이지에 더 많은 div.news가 있다는 것입니다. 어떤 경우에는 모두 표시됩니다.
Yorian

4

어떤 이유로 토글이 작동하지 않았고 uncaught type error toggle is not a function브라우저에서 요소를 검사 할 때 오류가 발생 했습니다. 그래서 나는 다음 코드를 사용했고 그것은 나를 위해 일하기 시작했습니다.

$(".trigger").click(function () {
    $('.news').attr('style', 'display:none');
})

사용 된 jquery 스크립트 파일 jquery-2.1.3.min.js.


3

.hide()또는 원하는 요소가 .show()많으면 원하는 작업을 수행하는 데 많은 리소스를 낭비하게됩니다 ( .hide(0)또는 사용하더라도 .show(0)0 매개 변수가 애니메이션의 지속 시간 임).

요소의 표시 속성을 조작하는 데만 사용되는 Prototype.js .hide().show()메소드 와 는 달리 jQuery 의 구현은 더 복잡하며 많은 요소에 권장되지 않습니다.

이 경우에는 .css('display','none')숨기고 .css('display','')보여 주어야 할 것입니다.

.css('display','block') 특히 인라인 요소, 테이블 행 (실제로는 테이블 요소) 등으로 작업하는 경우에는 피해야합니다.


1

최고의 답변에 대한 lolesque의 의견을 고려하면 일반적으로 가지고있는 것과 다른 표시 속성을 가진 요소를 표시 / 숨기기 위해 속성 또는 클래스를 추가 할 수 있습니다. 사이트가 하위 호환성이 필요한 경우 클래스를 만들고 표시하기 위해 추가 / 제거하는 것이 좋습니다. / 요소 표시

.news-show {
display:inline-block;
}

.news-hide {
display:none;
}

inline-block을 원하는 표시 방법으로 바꾸고 , 역방향 인 경우 show / hide 대신 jquerys addclass https://api.jquery.com/addclass/ 및 removeclass https://api.jquery.com/removeclass/를 사용 하십시오. 호환성은 문제가되지 않습니다. 이와 같은 속성을 사용할 수 있습니다.

.news[data-news-visible=show] {
display:inline-block;
}

.news[data-news-visible=hide] {
display:none;
}

그리고 jquerys attr () http://api.jquery.com/attr/ 을 사용 하여 요소를 표시하고 숨 깁니다.

어떤 방법을 선호하든 이러한 방식으로 요소를 표시 / 숨길 때 css3 애니메이션을 쉽게 구현할 수 있습니다.


0

대신 show()추가 display:block를 사용하면 문제 가 display:hide발생할 수 있습니다.

이를 방지하기 위해 속성이있는 클래스를 갖고 display:none해당 요소에 대한 해당 클래스를 toggleClass().

$("button").on('click', function(event){  $("div").toggleClass("hide"); });
.hide{
   display:none;
}

div{
   width:40px;
   height:40px;
   background:#000;
   margin-bottom:20px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div></div>
<button>Toggle Box</button>

이에 대해 언급 한 답변은 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.