.hide()
, .show()
또는 .toggle()
함수를 사용하여 요소의 가시성을 토글할 수 있습니까?
visible
거나 hidden
있는지 어떻게 테스트하시겠습니까?
질문자 :Philip Morton
.hide()
, .show()
또는 .toggle()
함수를 사용하여 요소의 가시성을 토글할 수 있습니까?
visible
거나 hidden
있는지 어떻게 테스트하시겠습니까?
답변자 : Tsvetomir Tsonev
질문이 단일 요소를 참조하므로 다음 코드가 더 적합할 수 있습니다.
// Checks CSS content for display:[none|block], ignores visibility:[true|false] $(element).is(":visible"); // The same works with hidden $(element).is(":hidden");
twernt의 제안 과 동일하지만 단일 요소에 적용됩니다. jQuery FAQ에서 권장하는 알고리즘과 일치합니다 .
jQuery의 is() 를 사용하여 다른 요소, 선택기 또는 jQuery 객체로 선택한 요소를 확인합니다. 이 메서드는 전달된 매개변수를 충족하는 일치 항목을 찾기 위해 DOM 요소를 따라 이동합니다. 일치하는 항목이 있으면 true를 반환하고 그렇지 않으면 false를 반환합니다.
답변자 : twernt
hidden
선택기를 사용할 수 있습니다.
// Matches all elements that are hidden $('element:hidden')
그리고 visible
선택기:
// Matches all elements that are visible $('element:visible')
답변자 : Mote
if ( $(element).css('display') == 'none' || $(element).css("visibility") == "hidden"){ // 'element' is hidden }
위의 방법은 부모의 가시성을 고려하지 않습니다. 부모도 고려하려면 .is(":hidden")
또는 .is(":visible")
을 사용해야 합니다.
예를 들어,
<div id="div1" style="display:none"> <div id="div2" style="display:block">Div2</div> </div>
위의 방법은
div2
보이는 반면:visible
그렇지 않은 것으로 간주합니다. 그러나 위의 내용은 많은 경우에 유용할 수 있습니다. 특히 숨겨진 부모에 표시되는 오류 div가 있는지 찾아야 할 때 유용할 수 있습니다. 이러한 조건에서는:visible
이 작동하지 않기 때문입니다.
답변자 : aaronLile
이 답변들 중 어느 것도 제가 "가시성이 있는 항목을 어떻게 처리 visibility: hidden
?" . :visible
:hidden
둘 다 문서에 따라 표시를 찾고 있기 때문에 이를 처리하지 않습니다. 내가 결정할 수 있는 한, CSS 가시성을 처리하는 선택기는 없습니다. 다음은 내가 해결한 방법입니다(표준 jQuery 선택기, 더 압축된 구문이 있을 수 있음).
$(".item").each(function() { if ($(this).css("visibility") == "hidden") { // handle non visible state } else { // handle visible state } });
답변자 : user574889
:visible
및 :hidden
선택기를 사용하여 요소가 축소되었는지 여부를 결정할 수 있습니다.
var isVisible = $('#myDiv').is(':visible'); var isHidden = $('#myDiv').is(':hidden');
요소의 가시성을 기반으로 단순히 요소에 대해 작업하는 경우 선택기 표현식에 :visible
또는 :hidden
예를 들어:
$('#myDiv:visible').animate({left: '+=200px'}, 'slow');
답변자 : Simon_Weaver
종종 무언가가 보이는지 여부를 확인할 때 즉시 진행하여 다른 일을 하게 됩니다. jQuery 체이닝을 사용하면 이를 쉽게 수행할 수 있습니다.
따라서 선택기가 있고 가 표시되거나 숨겨져 있는 경우에만 이에 대해 일부 작업을 수행하려는 경우 filter(":visible")
또는 filter(":hidden")
다음 원하는 작업과 연결하면 됩니다. 가져 가다.
따라서 다음과 같이 if
if ($('#btnUpdate').is(":visible")) { $('#btnUpdate').animate({ width: "toggle" }); // Hide button }
또는 더 효율적이지만 더 추악합니다.
var button = $('#btnUpdate'); if (button.is(":visible")) { button.animate({ width: "toggle" }); // Hide button }
한 줄로 모든 작업을 수행할 수 있습니다.
$('#btnUpdate').filter(":visible").animate({ width: "toggle" });
답변자 : Pedro Rainho
jQuery 문서 에 따른 :visible
선택기 :
- CSS
display
값은none
입니다.type="hidden"
양식 요소입니다.- 너비와 높이는 명시적으로 0으로 설정됩니다.
- 상위 요소가 숨겨져 있으므로 해당 요소가 페이지에 표시되지 않습니다.
visibility: hidden
또는opacity: 0
이 있는 요소는 여전히 레이아웃에서 공간을 사용하기 때문에 보이는 것으로 간주됩니다.
이것은 어떤 경우에는 유용하고 어떤 경우에는 쓸모가 없습니다. 왜냐하면 요소가 보이는지 확인하려는 경우( display != none
) 부모의 가시성을 무시하면 .css("display") == 'none'
는 더 빠를 뿐만 아니라 가시성 검사도 올바르게 반환합니다.
표시 대신 가시성을 확인하려면 .css("visibility") == "hidden"
을 사용해야 합니다.
또한 추가 jQuery 참고 사항 을 고려하십시오.
때문에
:visible
JQuery와 확장과 CSS 사양의 일부가 사용하는 쿼리입니다:visible
기본 DOM에서 제공하는 성능 향상의 이점받을 수 없어querySelectorAll()
메소드를.:visible
을 사용하여 요소를 선택할 때 최상의 성능을 얻으려면 먼저 순수 CSS 선택기를 사용하여 요소를 선택한 다음.filter(":visible")
.
또한 성능이 걱정된다면 Now you see me… 성능 표시/숨기기 (2010-05-04)를 확인해야 합니다. 그리고 다른 방법을 사용하여 요소를 표시하거나 숨깁니다.
답변자 : webvitaly
display:none
, visibility:hidden
또는 opacity:0
요소를 숨길 수 있습니다. 이러한 방법의 차이점은 다음과 같습니다.
display:none
요소를 숨기고 공간을 차지하지 않습니다.visibility:hidden
은 요소를 숨기지만 여전히 레이아웃에서 공간을 차지합니다. opacity:0
은 요소를 "visibility:hidden"으로 숨기고 레이아웃에서 여전히 공간을 차지합니다. 유일한 차이점은 불투명도를 사용하면 요소를 부분적으로 투명하게 만들 수 있다는 것입니다.
if ($('.target').is(':hidden')) { $('.target').show(); } else { $('.target').hide(); } if ($('.target').is(':visible')) { $('.target').hide(); } else { $('.target').show(); } if ($('.target-visibility').css('visibility') == 'hidden') { $('.target-visibility').css({ visibility: "visible", display: "" }); } else { $('.target-visibility').css({ visibility: "hidden", display: "" }); } if ($('.target-visibility').css('opacity') == "0") { $('.target-visibility').css({ opacity: "1", display: "" }); } else { $('.target-visibility').css({ opacity: "0", display: "" }); }
유용한 jQuery 토글 방법:
$('.click').click(function() { $('.target').toggle(); }); $('.click').click(function() { $('.target').slideToggle(); }); $('.click').click(function() { $('.target').fadeToggle(); });
답변자 : Abiy
이것은 저에게 효과적이며 show()
및 hide()
를 사용하여 div를 숨기거나 표시합니다.
if( $(this).css('display') == 'none' ){ /* your code goes here */ } else { /* alternate logic */ }
답변자 : Matt Brock
일반 JavaScript를 사용하여 이 작업을 수행할 수도 있습니다.
function isRendered(domObj) { if ((domObj.nodeType != 1) || (domObj == document.body)) { return true; } if (domObj.currentStyle && domObj.currentStyle["display"] != "none" && domObj.currentStyle["visibility"] != "hidden") { return isRendered(domObj.parentNode); } else if (window.getComputedStyle) { var cs = document.defaultView.getComputedStyle(domObj, null); if (cs.getPropertyValue("display") != "none" && cs.getPropertyValue("visibility") != "hidden") { return isRendered(domObj.parentNode); } } return false; }
노트:
어디서나 작동
중첩 요소에 대해 작동
CSS 및 인라인 스타일에서 작동
프레임워크가 필요하지 않음
답변자 : Evgeny Levin
CSS class .hide { display: none!important; }
.
숨기기/보이기 위해 .addClass("hide")/.removeClass("hide")
호출합니다. 가시성을 확인하기 위해 .hasClass("hide")
합니다.
.toggle()
또는 .animate()
메서드를 사용하지 않으려는 경우 요소를 확인/숨기기/표시하는 간단하고 명확한 방법입니다.
답변자 : Code Spy
$('#clickme').click(function() { $('#book').toggle('slow', function() { // Animation complete. alert($('#book').is(":visible")); //<--- TRUE if Visible False if Hidden }); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="clickme"> Click here </div> <img id="book" src="https://upload.wikimedia.org/wikipedia/commons/8/87/Google_Chrome_icon_%282011%29.png" alt="" width="300"/>
출처(내 블로그에서):
Blogger 플러그 앤 플레이 - jQuery 도구 및 위젯: jQuery를 사용하여 요소가 숨겨져 있는지 또는 표시되는지 확인하는 방법
답변자 : ScoRpion
다음과 같이 hidden
또는 visible
속성을 간단히 사용할 수 있습니다.
$('element:hidden') $('element:visible')
또는 다음과 같이 당신은과 같은 단순화 할 수 있습니다.
$(element).is(":visible")
답변자 : Vaishu
ebdiv
style="display:none;"
으로 설정해야 합니다. . 표시 및 숨기기에 모두 적용됩니다.
$(document).ready(function(){ $("#eb").click(function(){ $("#ebdiv").toggle(); }); });
답변자 : Lucas
고려해야 할 또 다른 대답은 요소를 숨기는 경우 jQuery 를 사용해야 하지만 실제로 숨기는 대신 전체 요소를 제거하지만 HTML 콘텐츠와 태그 자체를 jQuery 변수에 복사한 다음 if (!$('#thetagname').length)
사용하여 화면에 그러한 태그가 있는지 테스트하기만 하면 됩니다.
답변자 : conceptdeluxe
:hidden
선택기에 대해 요소를 테스트할 때 절대 위치 요소가 자식 요소가 표시되더라도 숨겨진 것으로 인식될 수 있다는 점을 고려해야 합니다.
이것은 처음에는 다소 직관적이지 않은 것처럼 보이지만 jQuery 문서를 자세히 살펴보면 관련 정보를 얻을 수 있습니다.
요소는 여러 가지 이유로 숨겨진 것으로 간주될 수 있습니다. [...] 너비와 높이가 명시적으로 0으로 설정됩니다. [...]
따라서 이것은 상자 모델 및 요소의 계산된 스타일과 관련하여 실제로 의미가 있습니다. 너비와 높이가 명시적 으로 0으로 설정되지 않은 경우에도 암시적 으로 설정될 수 있습니다.
다음 예를 살펴보십시오.
console.log($('.foo').is(':hidden')); // true console.log($('.bar').is(':hidden')); // false
.foo { position: absolute; left: 10px; top: 10px; background: #ff0000; } .bar { position: absolute; left: 10px; top: 10px; width: 20px; height: 20px; background: #0000ff; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="foo"> <div class="bar"></div> </div>
jQuery 3.x용 업데이트:
jQuery 3을 사용하면 설명된 동작이 변경됩니다! 너비 및/또는 높이가 0인 항목을 포함하여 레이아웃 상자가 있는 경우 요소가 보이는 것으로 간주됩니다.
jQuery 3.0.0-alpha1이 있는 JSFiddle:
그러면 동일한 JavaScript 코드에 다음과 같은 출력이 표시됩니다.
console.log($('.foo').is(':hidden')); // false console.log($('.bar').is(':hidden')); // false
답변자 : Maneesh Kumar
다음과 같이 작동할 수 있습니다.
expect($("#message_div").css("display")).toBe("none");
답변자 : Irfan DANISH
예시:
$(document).ready(function() { if ($("#checkme:hidden").length) { console.log('Hidden'); } });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="checkme" class="product" style="display:none"> <span class="itemlist"><!-- Shows Results for Fish --></span> Category:Fish <br>Product: Salmon Atlantic <br>Specie: Salmo salar <br>Form: Steaks </div>
답변자 : Matthias Wegtun
보이지 않는지 확인하려면 !
:
if ( !$('#book').is(':visible')) { alert('#book is not visible') }
또는 다음은 여러 번 필요할 때 더 나은 성능을 위해 jQuery 선택기를 변수에 저장하는 샘이기도 합니다.
var $book = $('#book') if(!$book.is(':visible')) { alert('#book is not visible') }
답변자 : Ross Brasseaux
"숨기기" 요소를 위해 지정된 클래스를 사용하는 것은 쉽고 가장 효율적인 방법 중 하나입니다. Display
스타일이 '없음'인 클래스 '숨김'을 토글하면 해당 스타일을 직접 편집하는 것보다 더 빠르게 수행됩니다. 나는 이 중 일부를 Stack Overflow 질문 Turning two elements visible/hidden in the same div 에서 꽤 철저하게 설명했습니다.
다음은 Google 프론트 엔드 엔지니어 Nicholas Zakas의 Google Tech Talk에 대한 진정한 계몽 동영상입니다.
답변자 : Roman Losev
adblocker에 대한 가시적 검사를 사용하는 예가 활성화되었습니다.
$(document).ready(function(){ if(!$("#ablockercheck").is(":visible")) $("#ablockermsg").text("Please disable adblocker.").show(); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="ad-placement" id="ablockercheck"></div> <div id="ablockermsg" style="display: none"></div>
"ablockercheck"는 adblocker가 차단하는 ID입니다. 따라서 보이는지 확인하면 adblocker가 켜져 있는지 감지할 수 있습니다.
답변자 : Aleko
결국, 어떤 예도 나에게 적합하지 않으므로 내가 직접 작성했습니다.
테스트 (Internet Explorer filter:alpha
):
) 문서가 숨겨져 있지 않은지 확인
b) 요소에 너비/높이/불투명도가 0인지 또는 인라인 스타일에서 display:none
/ visibility:hidden
c) 요소의 중심(모든 픽셀/모서리를 테스트하는 것보다 빠르기 때문에)이 다른 요소(및 모든 조상, 예: overflow:hidden
/ scroll / 한 요소 위로 다른 요소 위로) 또는 화면 가장자리에 의해 숨겨져 있지 않은지 확인합니다.
d) 요소의 너비/높이/불투명도가 0인지 확인하거나 display:none
/visibility:hidden(모든 조상 중에서)
테스트 날짜
Android 4.4(네이티브 브라우저/Chrome/Firefox), Firefox(Windows/Mac), Chrome(Windows/Mac), Opera(Windows Presto /Mac WebKit), Internet Explorer(Internet Explorer 5-11 문서 모드 + Internet Explorer 8) 가상 머신) 및 Safari(Windows/Mac/iOS).
var is_visible = (function () { var x = window.pageXOffset ? window.pageXOffset + window.innerWidth - 1 : 0, y = window.pageYOffset ? window.pageYOffset + window.innerHeight - 1 : 0, relative = !!((!x && !y) || !document.elementFromPoint(x, y)); function inside(child, parent) { while(child){ if (child === parent) return true; child = child.parentNode; } return false; }; return function (elem) { if ( document.hidden || elem.offsetWidth==0 || elem.offsetHeight==0 || elem.style.visibility=='hidden' || elem.style.display=='none' || elem.style.opacity===0 ) return false; var rect = elem.getBoundingClientRect(); if (relative) { if (!inside(document.elementFromPoint(rect.left + elem.offsetWidth/2, rect.top + elem.offsetHeight/2),elem)) return false; } else if ( !inside(document.elementFromPoint(rect.left + elem.offsetWidth/2 + window.pageXOffset, rect.top + elem.offsetHeight/2 + window.pageYOffset), elem) || ( rect.top + elem.offsetHeight/2 < 0 || rect.left + elem.offsetWidth/2 < 0 || rect.bottom - elem.offsetHeight/2 > (window.innerHeight || document.documentElement.clientHeight) || rect.right - elem.offsetWidth/2 > (window.innerWidth || document.documentElement.clientWidth) ) ) return false; if (window.getComputedStyle || elem.currentStyle) { var el = elem, comp = null; while (el) { if (el === document) {break;} else if(!el.parentNode) return false; comp = window.getComputedStyle ? window.getComputedStyle(el, null) : el.currentStyle; if (comp && (comp.visibility=='hidden' || comp.display == 'none' || (typeof comp.opacity !=='undefined' && comp.opacity != 1))) return false; el = el.parentNode; } } return true; } })();
사용하는 방법:
is_visible(elem) // boolean
답변자 : Premshankar Tiwari
둘 다 확인해야 합니다... 표시 및 가시성:
if ($(this).css("display") == "none" || $(this).css("visibility") == "hidden") { // The element is not visible } else { // The element is visible }
$(this).is(":visible")
확인하면 jQuery는 자동으로 두 항목을 모두 확인합니다.
답변자 : Mathias Stavrou
어쩌면 당신은 이런 일을 할 수 있습니다
$(document).ready(function() { var visible = $('#tElement').is(':visible'); if(visible) { alert("visible"); // Code } else { alert("hidden"); } });
<script src="https://code.jquery.com/jquery-1.10.2.js"></script> <input type="text" id="tElement" style="display:block;">Firstname</input>
답변자 : pixellabme
다음과 같이 부울 값을 확인하여 가시성을 확인하기만 하면 됩니다.
if (this.hidden === false) { // Your code }
각 기능에 이 코드를 사용했습니다. 그렇지 않으면 요소의 가시성을 확인하기 위해 is(':visible')
을 사용할 수 있습니다.
답변자 : Andron
Elements with visibility: hidden or opacity: 0 are considered visible, since they still consume space in the layout
(jQuery :visible Selector에 대해 설명됨) - 다음과 같이 요소가 실제로 보이는지 확인할 수 있습니다.
function isElementReallyHidden (el) { return $(el).is(":hidden") || $(el).css("visibility") == "hidden" || $(el).css('opacity') == 0; } var booElementReallyShowed = !isElementReallyHidden(someEl); $(someEl).parents().each(function () { if (isElementReallyHidden(this)) { booElementReallyShowed = false; } });
답변자 : RN Kushwaha
그러나 요소의 CSS가 다음과 같으면 어떻게 될까요?
.element{ position: absolute;left:-9999; }
따라서 스택 오버플로 질문에 대한 이 답변 은 요소가 화면 밖에 있는지 확인하는 방법도 고려해야 합니다.
답변자 : V31
요소가 UI에 표시되는지 여부를 측정하기 위해 가시성/표시 속성을 확인하기 위해 함수를 생성할 수 있습니다.
function checkUIElementVisible(element) { return ((element.css('display') !== 'none') && (element.css('visibility') !== 'hidden')); }
답변자 : cssimsek
또한 다음은 요소의 상태를 확인한 다음 토글하는 삼항 조건식입니다.
$('someElement').on('click', function(){ $('elementToToggle').is(':visible') ? $('elementToToggle').hide('slow') : $('elementToToggle').show('slow'); });
답변자 : Gaurav
if($('#postcode_div').is(':visible')) { if($('#postcode_text').val()=='') { $('#spanPost').text('\u00a0'); } else { $('#spanPost').text($('#postcode_text').val()); }
출처 : Here
출처 : http:www.stackoverflow.com/questions/178325/how-do-i-check-if-an-element-is-hidden-in-jquery">
열거형을 열거하는 방법 (0) | 2021.09.26 |
---|---|
Java에서 NullPointerException 방지 (0) | 2021.09.26 |
커밋하기 전에 'git add'를 어떻게 취소합니까? (0) | 2021.09.25 |
스택과 힙은 무엇이며 어디에 있습니까? (0) | 2021.09.25 |
JavaScript 비교에서 어떤 등호 연산자(== vs ===)를 사용해야 합니까? (0) | 2021.09.25 |