0

我今天遇到了一个问题,部分用户希望在使用 jQuery 触发事件时禁用容器中的所有表单元素。

对于我的部分答案,我建议选择容器并找到表单元素,然后使用.each().

总的来说,选择器类似于:

$('.container').find('input, textarea, button, select');

find()我认为该部分相当长,但这些是我能想到的disabled根据 HTML 规范获取属性的唯一元素(如果有更多,请随时通知我)。现在我的问题。

是否有遍历一组 DOM 元素(可能由 jQuery 返回,但vanilla JS也可以)并确定当前元素是否可以采用根据 HTML 规范有效的属性?IE 我有一组元素,在一次迭代中我得到一个strong元素。disabled不对strong元素做任何事情,因此它会跳过它并移至适用的input元素disabled

4

1 回答 1

2

No. Browsers don't provide an API for determining what elements/attributes are valid. They also provide a lot of error recovery features, so testing by creating an element with attributes and seeing what happens to them isn't reliable.

You would need to compare against a specification.

HTML 4 and XHTML 1.x have DTDs that you could write a parser for.

于 2013-05-20T13:48:53.397 回答