it-swarm.com.de

wie man das DIV Element und alles drin deaktiviert

Ich muss einen DIV und seinen gesamten Inhalt mit Javascript deaktivieren. Ich kann schwören, dass ich es einfach mache

<div disabled="true"> 

ich habe schon früher für mich gearbeitet, aber aus irgendeinem Grund funktioniert es nicht mehr. Ich verstehe nicht warum.

In IE10: Der Text "Click Me" ist nicht ausgegraut und der Click-Handler funktioniert immer noch.

Ich brauche das eigentlich für IE10. Unten ist mein Code. Danke im Voraus.

<html>
    <script>
         function disableTest(){

            document.getElementById("test").disabled = true;
            var nodes = document.getElementById("test").getElementsByTagName('*');
            for(var i = 0; i < nodes.length; i++){
                nodes[i].disabled = true;
            }

         }


     </script>

<body onload="disableTest();">
   <div id="test">
       <div onclick="alert('hello');">
           Click Me
       </div>
   </div>

</body>
</html>
118
Marquinio

Versuche dies!

$("#test *").attr("disabled", "disabled").off('click');

Ich sehe Sie oben nicht bei der Verwendung von jquery, aber Sie haben es als Tag aufgelistet.

54
Danwilliger

Die folgende CSS-Anweisung deaktiviert Klickereignisse

pointer-events:none;
276
bukka

Ich denke, Inline-Skripte sind schwer zu stoppen, stattdessen können Sie dies versuchen:

<div id="test">
    <div>Click Me</div>
</div>

und Drehbuch:

$(function () {
    $('#test').children().click(function(){
      alert('hello');
    });
    $('#test').children().off('click');
});

CHEKOUT FIDDLE UND SEHEN, DASS ES HILFT

Weitere Informationen zu .off ()

9
Jai

reines Javascript keine jQuery

function sah() {
                $("#div2").attr("disabled", "disabled").off('click');
                var x1=$("#div2").hasClass("disabledDiv");
                
                (x1==true)?$("#div2").removeClass("disabledDiv"):$("#div2").addClass("disabledDiv");
  sah1(document.getElementById("div1"));

}

    function sah1(el) {
        try {
            el.disabled = el.disabled ? false : true;
        } catch (E) {}
        if (el.childNodes && el.childNodes.length > 0) {
            for (var x = 0; x < el.childNodes.length; x++) {
                sah1(el.childNodes[x]);
            }
        }
    }
#div2{
  padding:5px 10px;
  background-color:#777;
  width:150px;
  margin-bottom:20px;
}
.disabledDiv {
    pointer-events: none;
    opacity: 0.4;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<div id="div1">
        <div id="div2" onclick="alert('Hello')">Click me</div>
        <input type="text" value="SAH Computer" />
        <br />
        <input type="button" value="SAH Computer" />
        <br />
        <input type="radio" name="sex" value="Male" />Male
        <Br />
        <input type="radio" name="sex" value="Female" />Female
        <Br />
    </div>
    <Br />
    <Br />
    <input type="button" value="Click" onclick="sah()" />
4
Nikhil sHETH

Ich habe keine Erfahrung damit, aber es scheint, dass BlockUI das ist, wonach Sie suchen. Probieren Sie das aus.

3
Difusio

Sie können "Deaktivieren" nicht verwenden, um ein Klickereignis zu deaktivieren. Ich weiß nicht, wie oder ob es in IE6-9 funktioniert hat, aber es hat in Chrome nicht funktioniert, und so sollte es in IE10 nicht funktionieren.

Sie können das Ereignis onclick auch deaktivieren, indem Sie ein Ereignis anhängen, das Folgendes abbricht:

;(function () {
    function cancel () { return false; };
    document.getElementById("test").disabled = true;
    var nodes = document.getElementById("test").getElementsByTagName('*');
    console.log(nodes);
    for (var i = 0; i < nodes.length; i++) {
        nodes[i].setAttribute('disabled', true);
        nodes[i].onclick = cancel;
    }
}());

Darüber hinaus muss durch das direkte Setzen von "disabled" auf einem Knoten nicht unbedingt das Attribut hinzugefügt werden, das setAttribute verwendet.

http://jsfiddle.net/2fPZu/

1