jquery 如何禁用DIV元素和[复制]中所有内容

rlcwz9us  于 2023-08-04  发布在  jQuery
关注(0)|答案(5)|浏览(123)

此问题在此处已有答案

How to disable all div content(29回答)
9年前关闭。
我需要禁用一个DIV和所有它的内容使用JavaScript。我可以发誓

<div disabled="true">

字符串
以前对我有用,但由于某种原因,它不再起作用了。我不明白为什么
在IE10中:文本“单击我”没有变灰,单击处理程序仍然有效。
我真的需要这个为IE10工作。下面是我的代码。

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

xdyibdwo

xdyibdwo1#

下面的css语句禁用click事件

pointer-events:none;

字符串

ki0zmccv

ki0zmccv2#

试试这个!

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

字符串
我没有看到你在上面使用jquery,但你把它列为一个标记。

jhdbpxl9

jhdbpxl93#

JavaScript和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()" />
ijxebb2r

ijxebb2r4#

我认为内联脚本很难停止,你可以试试这个:

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

字符串
脚本:

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

CHEKOUT FIDDLE AND SEE IT HELPS

Read More about .off()

yqhsw0fo

yqhsw0fo5#

你不能使用“disable”来禁用点击事件。我不知道它在IE6-9中是如何工作的,但它在Chrome上不起作用,它也不应该像那样在IE10上工作。
您也可以通过附加取消事件来禁用onclick事件:

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

字符串
此外,直接在节点上设置“disabled”不一定会添加属性-使用setAttribute可以。
http://jsfiddle.net/2fPZu/

相关问题