복붙노트

[JQUERY] 모든 사업부의 내용을 해제하는 방법

JQUERY

모든 사업부의 내용을 해제하는 방법

해결법


  1. 1.폼 요소에 대한 위의 답변의 대부분은에만 작동합니다. 그 내용을 포함한 모든 DIV를 해제하는 간단한 방법은 비활성화 마우스 상호 작용입니다. 예를 들면 :

    폼 요소에 대한 위의 답변의 대부분은에만 작동합니다. 그 내용을 포함한 모든 DIV를 해제하는 간단한 방법은 비활성화 마우스 상호 작용입니다. 예를 들면 :

    $("#mydiv").addClass("disabledbutton");
    

    CSS

    .disabledbutton {
        pointer-events: none;
        opacity: 0.4;
    }
    

    보충:

    이 같은 주석 많은 : "이 만 해제하면 마우스 이벤트가 있지만 컨트롤은 여전히 ​​사용할 수 있습니다 것"과 "할 수 있습니다 여전히 탐색 키보드로". 당신은 당신의 스크립트 코드를 추가 할 수 및 입력은 키보드 탭 같은 다른 방법으로 도달 할 수 없습니다. 당신은 당신의 요구에 맞게이 코드를 변경할 수 있습니다.

    $([Parent Container]).find('input').each(function () {
         $(this).attr('disabled', 'disabled');
     });
    

  2. 2.같은 JQuery와 일을 같은 프레임 워크를 사용합니다 :

    같은 JQuery와 일을 같은 프레임 워크를 사용합니다 :

    function toggleStatus() {
        if ($('#toggleElement').is(':checked')) {
            $('#idOfTheDIV :input').attr('disabled', true);
        } else {
            $('#idOfTheDIV :input').removeAttr('disabled');
        }   
    }
    

    비활성화 사용하여 입력 요소에서 사업부 블록을 사용 jQuery를 당신을 도움이 될 것입니다!

    jQuery를 1.6로, 당신은 비활성화하는 .attr 대신 .prop 사용해야합니다.


  3. 3.난 그냥 사용 및 요소를 사용하지 않도록이 확장 방법을 언급하고 싶었다. 나는 그것을 추가하고 직접 속성을 제거보다 훨씬 청소기 방법입니다 생각합니다.

    난 그냥 사용 및 요소를 사용하지 않도록이 확장 방법을 언급하고 싶었다. 나는 그것을 추가하고 직접 속성을 제거보다 훨씬 청소기 방법입니다 생각합니다.

    그럼 당신은 단순히 수행

    $("div *").disable();
    

  4. 4.여기 사업부하지만 단지 blockelement을 필요로하지 않는 사람들에 대한 빠른 주석입니다. HTML5에서는
    장애인 속성을 얻었다. 장애인 FIELDSET의 모든 폼 요소를 사용할 수 없습니다.

    여기 사업부하지만 단지 blockelement을 필요로하지 않는 사람들에 대한 빠른 주석입니다. HTML5에서는

    장애인 속성을 얻었다. 장애인 FIELDSET의 모든 폼 요소를 사용할 수 없습니다.


  5. 5.비활성 속성은 폼 요소 DIV 요소에 대한 W3C 스펙의 일부가 아니다.

    비활성 속성은 폼 요소 DIV 요소에 대한 W3C 스펙의 일부가 아니다.

    마틴에 의해 제안 JQuery와 접근 방식은 이러한 목표를 달성하기 위하여려고하고있는 유일한 절대 안전한 방법입니다.


  6. 6.당신은 사용 안 함 사건이 간단한 CSS 문을 사용할 수 있습니다

    당신은 사용 안 함 사건이 간단한 CSS 문을 사용할 수 있습니다

    #my-div {
        pointer-events:none;
    }
    

  7. 7.cletu의 솔루션과 유사하지만, 내가 그 솔루션을 사용하여 오류가 발생했습니다,이 해결 방법은 다음과 같습니다

    cletu의 솔루션과 유사하지만, 내가 그 솔루션을 사용하여 오류가 발생했습니다,이 해결 방법은 다음과 같습니다

    $('div *').prop('disabled',true);
    // or
    $('#the_div_id *').prop('disabled',true);
    

    나에게 벌금을 작동


  8. 8.이것을 달성하는 한 가지 방법은 DIV의 모든 어린이들에게 장애인 소품을 추가하는 것입니다. 당신은 매우 쉽게 달성 할 수 있습니다 :

    이것을 달성하는 한 가지 방법은 DIV의 모든 어린이들에게 장애인 소품을 추가하는 것입니다. 당신은 매우 쉽게 달성 할 수 있습니다 :

    $("#myDiv").find("*").prop('disabled', true);
    

    $는 ( "# myDiv") 사업부를 발견, .find ( "*") 각각을 비활성화합니다 (사실 '장애인') 모든 수준과 .prop 당신의 모든 자식 노드를 가져옵니다.

    이 방법은 모든 컨텐츠를 사용할 수 없으며 당신은 그들이 등 또한, 당신이 어떤 CSS 클래스를 추가 할 필요가 없습니다 스크롤, 그들에게 탭을 클릭 할 수 없습니다.


  9. 9.브라우저 테스트 : IE 9, 크롬, 파이어 폭스와 JQuery와-1.7.1.min.js

    브라우저 테스트 : IE 9, 크롬, 파이어 폭스와 JQuery와-1.7.1.min.js

        $(document).ready(function () {
            $('#chkDisableEnableElements').change(function () {
                if ($('#chkDisableEnableElements').is(':checked')) {
                    enableElements($('#divDifferentElements').children());
                }
                else {
                    disableElements($('#divDifferentElements').children());
                }
            });
        });
    
        function disableElements(el) {
            for (var i = 0; i < el.length; i++) {
                el[i].disabled = true;
    
                disableElements(el[i].children);
            }
        }
    
        function enableElements(el) {
            for (var i = 0; i < el.length; i++) {
                el[i].disabled = false;
    
                enableElements(el[i].children);
            }
        }
    

  10. 10.FIELDSET에 태그 내에서 DIV 랩 :

    FIELDSET에 태그 내에서 DIV 랩 :

    <fieldset disabled>
    <div>your controls</div>
    </fieldset>
    

  11. 11.당신이 알고있는 HTML 입력 컨트롤을 비활성화하여 '장애인'속성이 될 수 있습니다. 입력 제어 '비활성화'속성이 설정되면, 이러한 제어와 연관된 이벤트 처리기가 호출되지 않는다.

    당신이 알고있는 HTML 입력 컨트롤을 비활성화하여 '장애인'속성이 될 수 있습니다. 입력 제어 '비활성화'속성이 설정되면, 이러한 제어와 연관된 이벤트 처리기가 호출되지 않는다.

    당신은 당신이 원하는 경우, 사업부처럼 '장애인'속성을 지원하지 않는 HTML 요소에 대한 행동 이상 시뮬레이션 할 수 있습니다.

    당신이 사업부가 있고, 해당 사업부에 클릭이나 키 이벤트를 지원하려면 다음 두 가지 작업을 수행해야합니다 : 당신이 사업부를 사용하지 않을 때 1), 비활성화 된 속성을 설정 평소와 같이 (단지 규칙을 준수합니다) 장애인 속성이 DIV에 설정되어있는 경우 2) 사업부의 클릭 및 / 또는 키 핸들러에서 확인합니다. 이 경우, 단지 클릭 또는 키 이벤트를 (예를 들어, 단지 즉시 반환) 무시하십시오. 장애인 속성을 설정하지 않으면, 다음 사업부의 클릭 및 / 또는 키 이벤트 로직을한다.

    위의 단계가 아니라 브라우저 독립적이다.


  12. 12.나는 노트의 몇 칩 거라고 생각했다.

    나는 노트의 몇 칩 거라고 생각했다.


  13. 13.이 수색자입니다,

    이 수색자입니다,

    내가 한 가장 좋은이며,

    $('#myDiv *').attr("disabled", true);                   
    $('#myDiv *').fadeTo('slow', .6);
    

  14. 14.댓글에서 언급 한 바와 같이, 당신은 탭 키를 사용하여 요소 사이를 이동하여 여전히 액세스 요소 수 있습니다. 나는이 추천 있도록 :

    댓글에서 언급 한 바와 같이, 당신은 탭 키를 사용하여 요소 사이를 이동하여 여전히 액세스 요소 수 있습니다. 나는이 추천 있도록 :

    $("#mydiv")
      .css({"pointer-events" : "none" , "opacity" :  "0.4"})
      .attr("tabindex" , "-1");
    

  15. 15.다음과 같이 장애인의 의미를 유지하고 싶었다면

    다음과 같이 장애인의 의미를 유지하고 싶었다면

    <div disabled="disabled"> Your content here </div>
    

    다음 CSS를 추가 할 수 있습니다

    div[disabled=disabled] {
      pointer-events: none;
      opacity: 0.4;
    }
    

    여기 장점은 작업 할 것을 사업부에 클래스를 사용하여 작업하지 않을 것입니다


  16. 16.나는 클리 터스 '기능의 향상된 버전을 사용합니다 :

    나는 클리 터스 '기능의 향상된 버전을 사용합니다 :

     $.fn.disable = function() {
        return this.each(function() {          
          if (typeof this.disabled != "undefined") {
            $(this).data('jquery.disabled', this.disabled);
    
            this.disabled = true;
          }
        });
    };
    
    $.fn.enable = function() {
        return this.each(function() {
          if (typeof this.disabled != "undefined") {
            this.disabled = $(this).data('jquery.disabled');
          }
        });
    };
    

    어떤 요소의 원래 '장애인'속성을 저장합니다.

    $('#myDiv *').disable();
    

  17. 17.CSS의 포인터 - 이벤트 속성은 혼자 스크롤에서하지 비활성화 자식 요소를 않습니다, 그것은 (단지 SVG에 대한) DIV 요소 IE10에 의해에서 지원 아니에요. http://caniuse.com/#feat=pointer-events

    CSS의 포인터 - 이벤트 속성은 혼자 스크롤에서하지 비활성화 자식 요소를 않습니다, 그것은 (단지 SVG에 대한) DIV 요소 IE10에 의해에서 지원 아니에요. http://caniuse.com/#feat=pointer-events

    모든 브라우저에서 DIV의 내용을 사용하지 않으려면.

    자바 스크립트 :

    $("#myDiv")
      .addClass("disable")
      .click(function () {
        return false;
      });
    

    CSS는 :

    .disable {
      opacity: 0.4;
    }
    // Disable scrolling on child elements
    .disable div,
    .disable textarea {
      overflow: hidden;
    }
    

    IE10 및 제외하고, 모든 브라우저에서 DIV의 내용을 사용하지 않으려면.

    자바 스크립트 :

    $("#myDiv").addClass("disable");
    

    CSS는 :

    .disable {
      // Note: pointer-events not supported by IE10 and under
      pointer-events: none;
      opacity: 0.4;
    }
    // Disable scrolling on child elements
    .disable div,
    .disable textarea {
      overflow: hidden;
    }
    

  18. 18.다음은 가능 마스킹 된 div에 대한보다 포괄적 인 솔루션입니다

    다음은 가능 마스킹 된 div에 대한보다 포괄적 인 솔루션입니다

    또한 hourglassOn 및 hourglassOff 별도로 사용할 수되는 포함

    // elemOrId - jquery element or element id, defaults to $('<body>')'
    // settings.color defaults to 'transparent'
    // settings.opacity defaults to 1
    // settings.zIndex defaults to 2147483647
    // if settings.hourglasss==true change cursor to hourglass over mask
    function maskOn(elemOrId, settings) {
        var elem=elemFromParam(elemOrId);
        if (!elem) return;
    
        var maskDiv=elem.data('maskDiv');
        if (!maskDiv) {
            maskDiv=$('<div style="position:fixed;display:inline"></div>');
            $('body').append(maskDiv);
            elem.data('maskDiv', maskDiv);
        }
    
        if (typeof settings==='undefined' || settings===null) settings={};
        if (typeof settings.color==='undefined' || settings.color===null) settings.color='transparent';
        if (typeof settings.opacity==='undefined' || settings.opacity===null) settings.opacity=1;
        if (typeof settings.zIndex==='undefined' || settings.zIndex===null) settings.zIndex=2147483647;
        if (typeof settings.hourglass==='undefined' || settings.hourglass===null) settings.hourglass=false;
    
        // stretch maskdiv over elem
        var offsetParent = elem.offsetParent();
        var widthPercents=elem.outerWidth()*100/offsetParent.outerWidth()+'%';
        var heightPercents=elem.outerHeight()*100/offsetParent.outerHeight()+'%';
        maskDiv.width(widthPercents);
        maskDiv.height(heightPercents);
        maskDiv.offset($(elem).offset());
    
        // set styles
        maskDiv[0].style.backgroundColor = settings.color;
        maskDiv[0].style.opacity = settings.opacity;
        maskDiv[0].style.zIndex = settings.zIndex;
    
        if (settings.hourglass) hourglassOn(maskDiv);
    
        return maskDiv;
    }
    
    // elemOrId - jquery element or element id, defaults to $('<body>')'
    function maskOff(elemOrId) {
        var elem=elemFromParam(elemOrId);
        if (!elem) return;
    
        var maskDiv=elem.data('maskDiv');
        if (!maskDiv) {
            console.log('maskOff no mask !');
            return;
        }
    
        elem.removeData('maskDiv');
        maskDiv.remove();
    }
    
    // elemOrId - jquery element or element id, defaults to $('<body>')'
    // if decendents is true also shows hourglass over decendents of elemOrId, defaults to true
    function hourglassOn(elemOrId, decendents) {
        var elem=elemFromParam(elemOrId);
        if (!elem) return;
    
        if (typeof decendents==='undefined' || decendents===null) decendents=true;
    
        if ($('style:contains("hourGlass")').length < 1) $('<style>').text('.hourGlass { cursor: wait !important; }').appendTo('head');
        if ($('style:contains("hourGlassWithDecendents")').length < 1) $('<style>').text('.hourGlassWithDecendents, .hourGlassWithDecendents * { cursor: wait !important; }').appendTo('head');
        elem.addClass(decendents ? 'hourGlassWithDecendents' : 'hourGlass');
    }
    
    // elemOrId - jquery element or element id, defaults to $('<body>')'
    function hourglassOff(elemOrId) {
        var elem=elemFromParam(elemOrId);
        if (!elem) return;
    
        elem.removeClass('hourGlass');
        elem.removeClass('hourGlassWithDecendents');
    }
    
    function elemFromParam(elemOrId) {
        var elem;
        if (typeof elemOrId==='undefined' || elemOrId===null) 
            elem=$('body');
        else if (typeof elemOrId === 'string' || elemOrId instanceof String) 
            elem=$('#'+elemOrId);
        else
            elem=$(elemOrId);
    
        if (!elem || elem.length===0) {
            console.log('elemFromParam no element !');
            return null;
        }
    
        return elem;
    }
    

    이것으로 당신은 예를 들어 수행 할 수 있습니다

    maskOn(); // transparent page mask
    maskOn(null, {color:'gray', opacity:0.8}); // gray page mask with opacity
    maskOff(); // remove page mask
    maskOn(div); // transparent div mask
    maskOn(divId, {color:'gray', hourglass:true}); // gray div mask with hourglass
    maskOff(div); // remove div mask
    

    jsfiddle 참조


  19. 19.

    function disableItems(divSelector){
        var disableInputs = $(divSelector).find(":input").not("[disabled]");
        disableInputs.attr("data-reenable", true);
        disableInputs.attr("disabled", true);
    }
    
    function reEnableItems(divSelector){
        var reenableInputs = $(divSelector).find("[data-reenable]");
        reenableInputs.removeAttr("disabled");
        reenableInputs.removeAttr("data-reenable");
    }
    

  20. 20.아니면 그냥 CSS를하고 "장애인"클래스를 사용합니다. 참고 : 장애인 속성을 사용하지 않습니다. 온 / 오프 jQuery로 엉망 필요가 없습니다. 이것은 훨씬 더 쉽게 크로스 브라우저를 작동합니다

    아니면 그냥 CSS를하고 "장애인"클래스를 사용합니다. 참고 : 장애인 속성을 사용하지 않습니다. 온 / 오프 jQuery로 엉망 필요가 없습니다. 이것은 훨씬 더 쉽게 크로스 브라우저를 작동합니다

    .disabled{
        position: relative;
    }
    .disabled:after{
        content: "";
        position: absolute;
        width: 100%;
        height: inherit;
        background-color: rgba(0,0,0,0.1);
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
    }
    

    페이지를 초기화하거나 버튼을 전환 할 때 그런 다음에 오프를 종료 할 수 있습니다

    if(myDiv !== "can be edited"){
        $('div').removeClass('disabled');
    } else{
        $('div').addClass('disabled');
    }
    

  21. 21.또 다른 방법은 JQuery와의 내부 높이, 폭 및 내부 함유 DIV의 위치를 ​​얻고, 단순히 다른 DIV 투명한 상부 위에 동일한 크기를 오버레이하는 것이다. 이 대신에만 입력, 해당 컨테이너 내부의 모든 요소에서 작동합니다.

    또 다른 방법은 JQuery와의 내부 높이, 폭 및 내부 함유 DIV의 위치를 ​​얻고, 단순히 다른 DIV 투명한 상부 위에 동일한 크기를 오버레이하는 것이다. 이 대신에만 입력, 해당 컨테이너 내부의 모든 요소에서 작동합니다.

    JS 비활성화와 함께, 당신은 여전히 ​​div의 입력 / 콘텐츠를 사용 할 수 있습니다,하지만 기억하십시오. 같은 너무 위의 답변 간다.


  22. 22.

    $("#yourdivid textarea, #yourdivid input, #yourdivid select").attr('disabled',true);
    

  23. 23.이 CSS 만 / NOSCRIPT 용액 상호 작용을 방지 FIELDSET 상기 오버레이 (또는 DIV 또는 다른 원소)를 추가한다 :

    이 CSS 만 / NOSCRIPT 용액 상호 작용을 방지 FIELDSET 상기 오버레이 (또는 DIV 또는 다른 원소)를 추가한다 :

    fieldset { position: relative; }
    fieldset[disabled]::after { content: ''; display: inline-block; position: absolute; top: 0; left: 0; right: 0; bottom: 0; pointer-events: all; background: rgba(128,128,128,0.2); }
    

    당신이 보이지 않는 즉 투명 오버레이를 원하는 경우, 예를 들어,의 배경을 설정 RGBA (128,128,128,0), 배경없이 그것을하지 않습니다 작품으로. IE9 +에 대한 위의 작품. 다음 훨씬 간단 CSS는 + IE11에서 작동합니다

    [disabled] { pointer-events: none; }
    

    크롬


  24. 24.당신은 단순히 클릭 사람을 막으려하고 엄청 시리 보안에 대해 걱정하지 않는 경우 - 나는 99999 개 종류 그것을 잘의 Z- 인덱스와 절대 위치 DIV를 발견했다. 당신은 클릭하거나 사업부가 그 위에 배치되어 있기 때문에 컨텐츠에 액세스 할 수 없습니다. A는 단순한 비트와 당신이 그것을 제거 할 필요 때까지 CSS가 유일한 솔루션입니다 수 있습니다.

    당신은 단순히 클릭 사람을 막으려하고 엄청 시리 보안에 대해 걱정하지 않는 경우 - 나는 99999 개 종류 그것을 잘의 Z- 인덱스와 절대 위치 DIV를 발견했다. 당신은 클릭하거나 사업부가 그 위에 배치되어 있기 때문에 컨텐츠에 액세스 할 수 없습니다. A는 단순한 비트와 당신이 그것을 제거 할 필요 때까지 CSS가 유일한 솔루션입니다 수 있습니다.


  25. 25.편집하다: 나는 () 메소드를 CSTE 연구진 사용했습니다 아래 대신 .bind () 메서드를 사용하는 방법

    편집하다: 나는 () 메소드를 CSTE 연구진 사용했습니다 아래 대신 .bind () 메서드를 사용하는 방법

    $(this).bind('click', false);
    $(this).bind('contextmenu', false);
    

    당신의 설정을 제거하려면, 당신은 () 메소드를 .unbind 사용할 수 있습니다. .OFF () 메소드가 작동하지 않는 반면 예상대로.

     $(this).unbind('click', false);
     $(this).unbind('contextmenu', false);
    

    수백 개의 솔루션을 연구 한 후! 아래, 포인터 이벤트에 대한 학습 내가 한 것입니다.

    @Kokodoko 자신의 솔루션에서 언급 한 바와 같이 IE를 제외한 모든 브라우저 경향이있다. 포인터 이벤트는 낮은 버전에서 IE11과하지 작동합니다. 나는 또한 IE11에서 발견, 포인터 이벤트는 자식 요소에서 작동하지 않습니다. 따라서 우리는 다음과 같은이있는 경우

     <a href="www.preshmalinetpereira.wordpress.com"><i class="car icon"></i><span>My Blog</span></a>
    

    어디 스팬 포인터 이벤트를 설정, 자식 요소를 -is : 없음 작동하지 않습니다

    이 문제를 극복하기 위해 나는 IE에 대한 포인터 이벤트의 역할을 수 있으며, 낮은 버전에서 작동하는 함수를 썼다.

    JS 파일에서

    DisablePointerEvents(".DisablePointerEvents");
    
    
    function DisablePointerEvents(classId) {
        $(classId).each(function () {
            $(this).on('click', false );
            $(this).on('contextmenu', false );
        });
    }
    

    CSS 파일에서

    .DisablePointerEvents{
        pointer-events: none;
        opacity: 0.7;
        cursor: default;
    }
    

    HTML에서

     <a href="www.preshmalinetpereira.wordpress.com" class="DisablePointerEvents"><i class="car icon"></i><span>My Blog</span></a>
    

    이 포인터 이벤트 작업을 나던와 자식 요소의 위의 조건이 발생할 때 포인터 - 이벤트 시나리오를 위조.

    동일한 용 JS 바이올린


  26. 26.내 선택에 보면

    내 선택에 보면

    $myForm.find('#fieldsetUserInfo input:disabled').prop("disabled", false);
    

    fieldsetUserInfo는 DIV 내가 사용하지 않거나 사용하려는 모든 입력을 포함합니다

    이 당신을 도움이되기를 바랍니다


  27. 27.html로 문자열이나 DOM 요소에 걸릴 원하지 않는 태그와 속성을 제거 구성 자바 스크립트 라이브러리가있다. 이러한 HTML 소독제로 알려져 있습니다. 예를 들면 :

    html로 문자열이나 DOM 요소에 걸릴 원하지 않는 태그와 속성을 제거 구성 자바 스크립트 라이브러리가있다. 이러한 HTML 소독제로 알려져 있습니다. 예를 들면 :

    예를 들면 에서 DOMPurify

    DOMPurify.sanitize('<div>abc<iframe//src=jAva&Tab;script:alert(3)>def</div>'); 
    // becomes <div>abcdef</div>
    
  28. from https://stackoverflow.com/questions/639815/how-to-disable-all-div-content by cc-by-sa and MIT license