如何使用 jQuery 禁用 div 或 table 中的所有元素

Posted

技术标签:

【中文标题】如何使用 jQuery 禁用 div 或 table 中的所有元素【英文标题】:How to disable all Element inside a div or table using jQuery 【发布时间】:2012-01-14 21:15:52 【问题描述】:

我有一个包含多个文本框和按钮的表格。我通过以下代码使用 jquery 禁用了我的表格:

 $("#tbl").attr("disabled", "disabled");

我的表格被禁用,但是当我双击按钮时,它变为启用,我也可以在我的文本框中输入字符。如何禁用表格内的所有控件?

谢谢

【问题讨论】:

循环遍历表中的所有子元素并禁用它们,这是我的建议。 【参考方案1】:

您必须遍历并禁用所有相关元素。

$("#tbl").find("input,button,textarea,select").attr("disabled", "disabled");

【讨论】:

这还会禁用#tbl 还是独立的? 在表上指定禁用没有意义:w3.org/TR/html5/tabular-data.html#the-table-element 使用$("#tbl :input").attr("disabled", "disabled");会容易得多 致 gdoron:因为 :input 是一个 jQuery 扩展而不是 CSS 规范的一部分,所以使用 :input 的查询不能利用原生 DOM querySelectorAll() 方法提供的性能提升。为了在使用 :input 选择元素时获得最佳性能,首先使用纯 CSS 选择器选择元素,然后使用 .filter(":input")【参考方案2】:

使用 div 对整个表格进行分层,实质上使其“不可点击”。为此检查 BlockUI 插件。

在http://malsup.com/jquery/block/#overview了解更多信息

或参考已经讨论过的话题 Disabling controls within a table - JQuery/javascript

【讨论】:

【参考方案3】:

我认为下面的代码也会很有用

$("YOUR_TABLE").find("*").attr("disabled", "disabled");

【讨论】:

【参考方案4】:

请试试这个

$("#tbl *").attr("disabled",disabled");

例如:

http://jsfiddle.net/zafqd/

【讨论】:

Gads 没有。这不仅速度慢,而且会将禁用的属性应用于<p><img> 等随机事物 使用$("#tbl :input").attr("disabled", "disabled");会容易得多

以上是关于如何使用 jQuery 禁用 div 或 table 中的所有元素的主要内容,如果未能解决你的问题,请参考以下文章

只读或禁用jquery标记

如何使用 jquery 启用或禁用基于其他 2 个单选按钮的单选?

jQuery 或 PHP - 如果启用/禁用另一个 DIV,则显示/隐藏 DIV 或 LI

使用 jQuery,如何禁用当前选项卡上的点击效果?

如何使用 jQuery 处理 2 次不同的 div 点击并从属性数据中获取值?

jquery如何获取第一个或最后一个子元素?