176

Javascriptを使用してDIVとそのすべてのコンテンツを無効にする必要があります。簡単なことをすることを誓うことができます

<div disabled="true"> 

以前は私のために働いていましたが、何らかの理由でもう機能しません。理由がわかりません。

IE10の場合:「ClickMe」というテキストはグレー表示されず、クリックハンドラーは引き続き機能します。

私は実際にこれが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>
4

5 に答える 5

403

次のcssステートメントはクリックイベントを無効にします

pointer-events:none;
于 2013-03-21T19:23:23.317 に答える
64

これを試して!

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

上記でjqueryを使用しているとは思いませんが、タグとしてリストされています。

于 2013-03-21T18:33:29.163 に答える
10

インライン スクリプトを停止するのは難しいと思います。代わりに、次の方法で試すことができます。

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

およびスクリプト:

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

フィドルをチェックアウトして、それが役立つことを確認してください

.off() の詳細を読む

于 2013-03-21T18:36:49.883 に答える
1

「無効化」を使用してクリックイベントを無効にすることはできません。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;
    }
}());

さらに、ノードに「無効」を直接設定しても、必ずしも属性が追加されるとは限りません。setAttributeを使用すると追加されます。

http://jsfiddle.net/2fPZu/

于 2013-03-21T18:38:26.777 に答える