복붙노트

[JQUERY] 요소가 jQuery를에 숨겨져 있는지 어떻게 확인합니까?

JQUERY

요소가 jQuery를에 숨겨져 있는지 어떻게 확인합니까?

해결법


  1. 1.문제는 하나의 요소를 의미하기 때문에,이 코드가 더 적합 할 수 있습니다

    문제는 하나의 요소를 의미하기 때문에,이 코드가 더 적합 할 수 있습니다

    // Checks CSS content for display:[none|block], ignores visibility:[true|false]
    $(element).is(":visible");
    
    // The same works with hidden
    $(element).is(":hidden");
    

    그것은 twernt의 제안과 동일하지만, 하나의 요소에 적용; 그리고 그것은 jQuery를 자주 묻는 질문에서 권장하는 알고리즘을 일치합니다.

    우리는 다른 요소, 선택 또는 jQuery를 객체로 선택된 요소를 확인하기 위해 () jQuery의이 사용합니다. DOM 요소에 따라이 방법의 이송은 만족 전달 된 매개 변수를 일치를 찾을 수 있습니다. 일치가있는 경우는 그렇지 않은 경우는 false 반환, true를 돌려줍니다.


  2. 2.당신은 숨겨진 선택기를 사용할 수 있습니다 :

    당신은 숨겨진 선택기를 사용할 수 있습니다 :

    // Matches all elements that are hidden
    $('element:hidden')
    

    그리고 눈에 보이는 선택 :

    // Matches all elements that are visible
    $('element:visible')
    

  3. 3.

    if ( $(element).css('display') == 'none' || $(element).css("visibility") == "hidden"){
        // 'element' is hidden
    }
    

    위의 방법은 부모의 가시성을 고려하지 않습니다. 또는 됐나 ( ": 보이는")뿐만 아니라 부모를 고려하려면 됐나 ( "숨겨진")을 사용해야합니다.

    예를 들어,

    <div id="div1" style="display:none">
      <div id="div2" style="display:block">Div2</div>
    </div>
    

  4. 4.이 답변 중에 내가, 검색 한 것입니다 질문으로 이해하는 것을 해결하지 "나는 가시성이 항목을 처리하려면 어떻게합니까? 숨겨진를". 둘 : 가시도 : 그들은 모두 문서에 따라 디스플레이를 찾고,이를 처리 할 숨겨져. 지금까지 내가 결정할 수 있기 때문에, 핸들 CSS 가시성에 아무런 선택이 없다. 여기에 내가 (표준의 jQuery 셀렉터가 좀 더 압축 된 구문이있을 수 있습니다) 그것을 해결하는 방법입니다 :

    이 답변 중에 내가, 검색 한 것입니다 질문으로 이해하는 것을 해결하지 "나는 가시성이 항목을 처리하려면 어떻게합니까? 숨겨진를". 둘 : 가시도 : 그들은 모두 문서에 따라 디스플레이를 찾고,이를 처리 할 숨겨져. 지금까지 내가 결정할 수 있기 때문에, 핸들 CSS 가시성에 아무런 선택이 없다. 여기에 내가 (표준의 jQuery 셀렉터가 좀 더 압축 된 구문이있을 수 있습니다) 그것을 해결하는 방법입니다 :

    $(".item").each(function() {
        if ($(this).css("visibility") == "hidden") {
            // handle non visible state
        } else {
            // handle visible state
        }
    });
    

  5. 5.어떻게에서 나는 전환 요소의 상태를 확인할 수 있습니까?

    어떻게에서 나는 전환 요소의 상태를 확인할 수 있습니까?

    가시 : 숨겨진 선택기를 당신은 요소가를 사용하여 붕괴 여부를 확인할 수 있습니다.

    var isVisible = $('#myDiv').is(':visible');
    var isHidden = $('#myDiv').is(':hidden');
    

    당신은 단순히 가시성을 기반 요소에 작용하는 경우, 당신은 단지 포함 할 수 있습니다 : 볼이나 : 선택기 표현에 숨겨진. 예를 들면 :

     $('#myDiv:visible').animate({left: '+=200px'}, 'slow');
    

  6. 6.종종 뭔가를 볼 경우 확인 또는, 당신은 바로 앞에 바로 가서 그것으로 다른 일을하려고하지 않을 때. jQuery를 체인이 쉽게한다.

    종종 뭔가를 볼 경우 확인 또는, 당신은 바로 앞에 바로 가서 그것으로 다른 일을하려고하지 않을 때. jQuery를 체인이 쉽게한다.

    당신은 선택이 있고 보이거나 숨겨진 경우에만 당신이 그것에 어떤 작업을 수행 할 그렇다면, 당신은 필터를 사용할 수 있습니다 ( ": 보이는") 또는 필터 ( "숨겨진") 당신이 원하는 작업과 체인 다음 취하다.

    그래서 그 대신 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" });
    

  7. 7.: JQuery와 문서에 따라 볼 수 선택 :

    : JQuery와 문서에 따라 볼 수 선택 :

    검사 할 경우 요소가 가시의 경우 때문에, 어떤 경우에 유용 등의 쓸모가 (디스플레이! = 없음), 부모의 가시성을 무시하고, 당신이 찾을 것이다 .CSS를하고 ( "표시") == '없음 '뿐만 아니라 빠른뿐만 아니라 제대로 가시성 검사를 반환합니다.

    대신 디스플레이의 가시성을 확인하려면 사용해야합니다 .CSS ( "가시성") == "숨겨진"를.

    또한 추가 jQuery를 노트 고려 :

    당신이 성능에 대해 우려하는 경우 또한, 당신은 당신이 저 ... 표시 / 숨기기 성능 (2010-05-04)를 참조하십시오 지금 확인해야합니다. 그리고 표시 및 숨기기 요소 다른 방법을 사용합니다.


  8. 8.이것은 나를 위해 작동하고, 내 사업부가 / 볼 숨겨진 수 있도록 표시 ()와 숨기기 ()를 사용하고 있습니다 :

    이것은 나를 위해 작동하고, 내 사업부가 / 볼 숨겨진 수 있도록 표시 ()와 숨기기 ()를 사용하고 있습니다 :

    if( $(this).css('display') == 'none' ){
        /* your code goes here */
    } else {
        /* alternate logic   */
    }
    

  9. 9.어떻게 요소의 가시성 및 jQuery를 작동;

    어떻게 요소의 가시성 및 jQuery를 작동;

    의 요소가 표시 숨겨진 수 : 없음, 가시성 : 숨기거나 불투명도 : 0. 이러한 방법의 차이 :


  10. 10.당신이 사용하는 일반 자바 스크립트 작업을 수행 할 수 있습니다 :

    당신이 사용하는 일반 자바 스크립트 작업을 수행 할 수 있습니다 :

    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;
    }
    

    노트:


  11. 11.나는 CSS 클래스 .hide {디스플레이 사용합니다! 없음을 중요; }.

    나는 CSS 클래스 .hide {디스플레이 사용합니다! 없음을 중요; }.

    표시 / 숨기기 위해, 나는 / ( "숨기기") .addClass를 호출합니다. removeClass ( "숨기기"). 가시성을 확인, 나는 .hasClass ( "숨기기")를 사용합니다.

    당신은 () 또는 .animate () 메소드를 .toggle 사용하지 않을 경우는, / 숨기기 / 표시 요소를 확인하는 간단하고 명확한 방법입니다.


  12. 12.데모 링크

    데모 링크

    $ ( '#의 clickme'). ((기능을 클릭) { $ ( '# 책'). 토글 ( '천천히', 기능 () { // 애니메이션이 완료되었습니다. ; 경고 (.)은 "볼"$은 ( '# 책은'()이다) // <--- 눈에 보이는 거짓 경우 경우 TRUE 숨겨진 }); }); <스크립트 SRC = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> 여기를 클릭하십시오

    출처:

    블로거 플러그 N 플레이 - jQuery를 도구 및 위젯 : 요소가 jQuery를 사용하여 숨기거나 표시되어 있는지 확인하는 방법


  13. 13.하나는 단순히처럼 숨기거나 표시 속성을 사용할 수 있습니다 :

    하나는 단순히처럼 숨기거나 표시 속성을 사용할 수 있습니다 :

    $('element:hidden')
    $('element:visible')
    

    또는 다음과 같이 당신은과 같은 단순화 할 수 있습니다.

    $(element).is(":visible")
    

  14. 14.ebdiv는 = 스타일 "표시 : 없음;"로 설정 될 수 없습니다. 그것은 표시 및 숨기기 모두 작동합니다 :

    ebdiv는 = 스타일 "표시 : 없음;"로 설정 될 수 없습니다. 그것은 표시 및 숨기기 모두 작동합니다 :

    $(document).ready(function(){
        $("#eb").click(function(){
            $("#ebdiv").toggle();
        });    
    });
    

  15. 15.당신이 고려에 넣어야 또 다른 대답은 당신이 요소를 숨기는 경우, 당신이 jQuery를 사용하는 대신에, 실제로 그것을 숨기고, 당신이 모든 요소를 ​​제거 할 수 있지만 당신이 jQuery를 변수로는 HTML 내용과 태그 자체를 복사 한 다음입니다 모두 당신이 경우 정상을 사용하여 화면에 같은 태그가 존재하는 경우, 시험이다 할 필요 (! $ ( '#의 thetagname'). 길이).

    당신이 고려에 넣어야 또 다른 대답은 당신이 요소를 숨기는 경우, 당신이 jQuery를 사용하는 대신에, 실제로 그것을 숨기고, 당신이 모든 요소를 ​​제거 할 수 있지만 당신이 jQuery를 변수로는 HTML 내용과 태그 자체를 복사 한 다음입니다 모두 당신이 경우 정상을 사용하여 화면에 같은 태그가 존재하는 경우, 시험이다 할 필요 (! $ ( '#의 thetagname'). 길이).


  16. 16.소자에 대하여 시험했을 때 jQuery를 숨겨진 선택기 그들의 자식 요소가 보이더라도 숨겨진 절대 위치 지정된 요소가 인식 될 수 있다는 것을 고려해야한다.

    소자에 대하여 시험했을 때 jQuery를 숨겨진 선택기 그들의 자식 요소가 보이더라도 숨겨진 절대 위치 지정된 요소가 인식 될 수 있다는 것을 고려해야한다.

    : JQuery와 문서에 대해 자세히 살펴 필요하면 관련 정보를 제공하지만 -이 처음에 다소 반 직관적 보인다

    이 그래서 실제로 상자 모델 및 요소의 계산 된 스타일에 관해서 의미가 있습니다. 폭과 높이가 0으로 명시 적으로 설정되지 않은 경우에도 그들은 암시 적으로 설정할 수 있습니다.

    다음의 예를 보라 :

    CONSOLE.LOG (. '숨겨진'$ ( '. 푸') (인)); // 진실 을 console.log ($ (()이다 '숨겨진' '바.'.)); // 거짓 .foo { 위치 : 절대; 왼쪽 : 10px; 상단 : 10px; 배경 : # FF0000; } .bar 인 { 위치 : 절대; 왼쪽 : 10px; 상단 : 10px; 폭 : 20 픽셀; 높이 : 20 픽셀; 배경 : # 0000FF; } <스크립트 SRC = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">

    jQuery를 3.x를 업데이트 :

    jQuery를 3으로 설명 된 동작은 변경됩니다! 그들은 제로 폭 및 / 또는 높이를 포함하여, 어떤 레이아웃 상자가있는 경우 요소를 볼 것으로 간주됩니다.

    jQuery를 3.0.0 - 알파 1과 JSFiddle :

    http://jsfiddle.net/pM2q3/7/

    같은 자바 스크립트 코드는이 출력을해야합니다 :

    console.log($('.foo').is(':hidden')); // false
    console.log($('.bar').is(':hidden')); // false
    

  17. 17.이 작업을 할 수 있습니다 :

    이 작업을 할 수 있습니다 :

    expect($("#message_div").css("display")).toBe("none");
    

  18. 18.예:

    예:

    $ (문서) .ready (함수 () { 경우 ($ ( "#의 checkme : 숨겨진") 길이.) { CONSOLE.LOG ( '알'); } }); <스크립트 SRC = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">

    <스팬 클래스 = "ITEMLIST"> 카테고리 : 생선 로
    제품 : 연어 대서양 로
    정화 : SALMO 살 라르 로
    형태 : 스테이크


  19. 19.그것은 눈에 보이는 내가 사용이 아닌지 확인하세요! :

    그것은 눈에 보이는 내가 사용이 아닌지 확인하세요! :

    if ( !$('#book').is(':visible')) {
        alert('#book is not visible')
    }
    

    또는 다음은 당신이 여러 번 필요 더 나은 성능을 가지고 변수에 jQuery를 선택을 저장, 또한 샘이다 :

    var $book = $('#book')
    
    if(!$book.is(':visible')) {
        alert('#book is not visible')
    }
    

  20. 20."숨어"요소에 지정된 클래스를 사용하면 쉽고도 가장 효율적인 방법 중 하나입니다. '없음'의 표시 스타일 '숨겨진'클래스를 토글 직접 해당 스타일 편집을보다 빠르게 수행합니다. 나는 같은 사업부에 숨겨진 보이는 두 가지 요소를 / 터닝 스택 오버플로 질문에 아주 철저하게,이 중 일부를 설명했다.

    "숨어"요소에 지정된 클래스를 사용하면 쉽고도 가장 효율적인 방법 중 하나입니다. '없음'의 표시 스타일 '숨겨진'클래스를 토글 직접 해당 스타일 편집을보다 빠르게 수행합니다. 나는 같은 사업부에 숨겨진 보이는 두 가지 요소를 / 터닝 스택 오버플로 질문에 아주 철저하게,이 중 일부를 설명했다.


  21. 21.adblocker 대한 가시적 검사를 사용하는 실시 예는 활성화된다 :

    adblocker 대한 가시적 검사를 사용하는 실시 예는 활성화된다 :

    $ (문서) .ready (함수 () { 경우 ($ ( "#의 ablockercheck은")입니다 (!. "볼")) $ ( "#의 ablockermsg") 텍스트 ( "제발 비활성화 adblocker.") 쇼 ()..; }); <스크립트 SRC = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">

    "ablockercheck"는 ID adblocker 블록이다. 이 표시되는 경우를 확인 그래서 당신은 adblocker이 설정되어있는 경우 감지 할 수 있습니다.


  22. 22.결국, 예 정장의 어느 날, 그래서 난 내 자신을 썼다.

    결국, 예 정장의 어느 날, 그래서 난 내 자신을 썼다.

    테스트 (인터넷 익스플로러 필터없이 지원 : 알파) :

    문서가 숨겨져되지 않은 경우) 확인

    없음 / 시야 : 인라인 스타일 숨겨진 요소가 제로 너비 / 높이 / 불투명도 또는 표시가있는 경우 b) 확인

    C)를 확인하면 중심 (더 빨리 다른 요소 (모든 조상들, 예를 숨겨되지 않는 요소의) 모든 픽셀 / 코너를 테스트보다도 있기 때문에 : 오버 플로우 : 다른 이상 / 스크롤 / 하나의 요소 숨김) 또는 화면 가장자리

    없음 / 시야 : 엘리먼트가 제로 너비 / 높이 / 불투명도 또는 표시가있는 경우 d) 확인 모든 조상 중 (계산 스타일 숨김)

    에서 테스트

    A의 안드로이드 4.4 (기본 브라우저 / 크롬 / 파이어 폭스), 파이어 폭스 (윈도우 / 맥), 크롬 (윈도우 / 맥), 오페라 (윈도우 프레스토 / 맥 웹킷), 인터넷 익스플로러 (Internet Explorer의 5-11 문서 모드 + 인터넷 익스플로러 8 가상 머신), 사파리 (윈도우 / 맥 / 아이폰 OS).

    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
    

  23. 23.당신은뿐만 아니라 가시성으로 모두 ... 표시를 확인해야합니다 :

    당신은뿐만 아니라 가시성으로 모두 ... 표시를 확인해야합니다 :

    if ($(this).css("display") == "none" || $(this).css("visibility") == "hidden") {
        // The element is not visible
    } else {
        // The element is visible
    }
    

    우리는 $를 확인하는 경우 (이) ( ": 보이는") .is는 자동으로 모두 것들에 대한, JQuery와 검사.


  24. 24.어쩌면 당신은 이런 식으로 뭔가를 할 수

    어쩌면 당신은 이런 식으로 뭔가를 할 수

    $ (문서) .ready (함수 () { VAR 볼 수 = $ ( '#의 tElement')입니다 ( '보이는.'); 경우 (표시) { 경고 ( "볼"); // 코드 } 그밖에 { 경고 ( "숨겨진"); } }); <스크립트 SRC = "https://code.jquery.com/jquery-1.10.2.js"> FIRSTNAME


  25. 25.간단히 같은 부울 값을 확인하여 가시성을 확인 :

    간단히 같은 부울 값을 확인하여 가시성을 확인 :

    if (this.hidden === false) {
        // Your code
    }
    

    나는 각 기능이 코드를 사용했다. 요소의 가시성을 확인하기위한 : 그렇지 않으면 당신은 ( '보이는')를 사용할 수 있습니다.


  26. 26.요소가 이런 식으로 정말 볼 경우 우리가 확인할 수 있습니다 - 요소 때문에 가시성 : 숨기거나 불투명도 : 그들은 여전히 ​​(가시 선택기 jQuery를위한 설명) 레이아웃에 공간을 사용하기 때문에 0, 볼 간주된다 :

    요소가 이런 식으로 정말 볼 경우 우리가 확인할 수 있습니다 - 요소 때문에 가시성 : 숨기거나 불투명도 : 그들은 여전히 ​​(가시 선택기 jQuery를위한 설명) 레이아웃에 공간을 사용하기 때문에 0, 볼 간주된다 :

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

  27. 27.그러나 요소의 CSS는 다음과 같이 어떤 경우?

    그러나 요소의 CSS는 다음과 같이 어떤 경우?

    .element{
        position: absolute;left:-9999;    
    }
    

    어떻게 요소가 있는지 확인하는 스택 오버플로 질문이 대답 그래서 오프 스크린도 고려되어야한다.


  28. 28.함수는 요소가 UI에 도시 여부 측정하기 위해 공개 / 표시 특성을 확인하기 위해서 생성 될 수있다.

    함수는 요소가 UI에 도시 여부 측정하기 위해 공개 / 표시 특성을 확인하기 위해서 생성 될 수있다.

    function checkUIElementVisible(element) {
        return ((element.css('display') !== 'none') && (element.css('visibility') !== 'hidden'));
    }
    

    작업 바이올린


  29. 29.또한 여기에 후 전환 할 요소의 상태를 확인하는 삼원 조건식이다 :

    또한 여기에 후 전환 할 요소의 상태를 확인하는 삼원 조건식이다 :

    $('someElement').on('click', function(){ $('elementToToggle').is(':visible') ? $('elementToToggle').hide('slow') : $('elementToToggle').show('slow'); });
    

  30. 30.

    if($('#postcode_div').is(':visible')) {
        if($('#postcode_text').val()=='') {
            $('#spanPost').text('\u00a0');
        } else {
            $('#spanPost').text($('#postcode_text').val());
    }
    
  31. from https://stackoverflow.com/questions/178325/how-do-i-check-if-an-element-is-hidden-in-jquery by cc-by-sa and MIT license