如何禁用所有 div 内容

IT技术 javascript jquery html
2021-01-27 09:26:35

我假设如果我禁用了一个 div,那么所有内容也会被禁用。

但是,内容是灰色的,但我仍然可以与之交互。

有没有办法做到这一点?(禁用 div 并禁用所有内容)

6个回答

上述许多答案仅适用于表单元素。禁用任何 DIV 包括其内容的简单方法是禁用鼠标交互。例如:

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

CSS

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

补充:

许多人评论如下:“这只会禁止鼠标事件,但控件仍处于启用状态”和“您仍然可以通过键盘导航”。您可以将此代码添加到您的脚本中,并且无法通过键盘选项卡等其他方式访问输入。您可以更改此代码以满足您的需要。

$([Parent Container]).find('input').each(function () {
     $(this).attr('disabled', 'disabled');
 });
注意:使用此解决方案,您无法使用鼠标或触摸设备与此元素或此元素的任何子元素进行交互。但是您仍然可以使用键盘对其进行标记。
2021-03-12 09:26:35
+1 正确答案-您节省了我几个小时的工作时间!!!泪水在眼里,并可能在爱-这也是所有浏览器都支持:caniuse.com/#feat=pointer-events
2021-03-14 09:26:35
我知道现在已经很晚了,但是 IE 8、IE 9 和 IE 10 仍然不支持它。只是让大家知道。caniuse.com/#feat=pointer-events
2021-03-17 09:26:35
仍然可以通过键盘访问。
2021-03-23 09:26:35
这只会禁止鼠标事件,但控件仍处于启用状态。
2021-03-27 09:26:35

使用像 JQuery 这样的框架来做这样的事情:

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

使用 jQuery 禁用和启用 Div 块中的输入元素应该对您有所帮助!

从 jQuery 1.6 开始,您应该使用.prop而不是.attr禁用。

您也可以使用 jquery 检查它们的状态并保存。做: $('#idOfPagination').is(':disabled') 吗?disablePagination = false : disablePagination = true; 一旦在全局区域中,直接在页面加载之后。
2021-03-14 09:26:35
实际上,它们的状态是在其他地方控制的,这取决于我正在分页的列表页面(它们并不总是需要被禁用)。我需要以某种方式在不改变内容控件的原始状态的情况下做到这一点
2021-03-15 09:26:35
“手动”选择所有输入......我会尝试这样做,但是将 div 标记为禁用是否就足够了?
2021-03-18 09:26:35
您可以过滤此按钮并执行“.attr('disabled', true);” 每次都在他们身边!只需执行 $('#idOfPagination').attr('disabled', true); 在 if{}else{} 构造之后。
2021-04-03 09:26:35
当我切换到取消禁用时,一些需要保持禁用状态的分页按钮也会被切换...
2021-04-09 09:26:35

这是对不需要 div 而只需要块元素的人的快速评论。在 HTML5 中<fieldset disabled="disabled"></fieldset>获得了 disabled 属性。禁用字段集中的每个表单元素都被禁用。

如果可以的话,我想添加更多的赞成票。这正是我所需要的!
2021-03-13 09:26:35
这是最好的答案。它在语义上最正确,告诉浏览器应该禁用此字段集中的所有输入。它尊重键盘,不需要鼠标处理 JS 注销。但是,请注意,截至本评论发布时,Edge 不会从另一个字段集内的父字段集继承 disabled 属性值。
2021-03-15 09:26:35
很好,最好的解决方案总是最简单的,谢谢。
2021-03-16 09:26:35
这是一个很好的答案——它允许动态项目在禁用状态下生成,只要它们在块元素内,而不是在创建时测试禁用状态——并且元素真正被禁用。
2021-03-20 09:26:35
最佳答案在这里✅
2021-03-22 09:26:35

我只想提一下这个启用和禁用元素的扩展方法我认为这比直接添加和删除属性更简洁。

然后您只需执行以下操作:

$("div *").disable();
如果您使用的是 asp.net,当您禁用面板控件时,您将获得一个 <div disabled="disabled">。这适用于 IE 中的子元素(即它们被禁用),但不适用于其他浏览器。您可以通过将 jquery 禁用功能与...$("div[disabled='disabled'] :input").disable(); 结合使用来禁用 Chrome/Firefox 中的所有子表单元素。
2021-03-12 09:26:35
此解决方案可能会导致大页面的副作用!(没有对 div 容器的静态引用/每个底层元素都被寻址)
2021-04-08 09:26:35

disabled 属性不是DIV 元素的 W3C 规范的一部分,仅适用于表单元素

Martin 建议的 jQuery 方法是实现此目的的唯一万无一失的方法。