递归禁用元素的所有子元素

low*_*key 28 jquery

这可能是一个是/否类型的问题.

我试图在jquery中绝对禁用元素的所有子元素.

打电话

$('#id_of_an_element').children().do(function(){
    do_something;
});
Run Code Online (Sandbox Code Playgroud)

递归地调用一个元素的所有子元素,或者只do_something对所有直接后代进行调用an_element

感谢帮助,

玩笑

kar*_*m79 71

给定一个表示一组DOM元素的jQuery对象,.children()方法允许我们 在DOM树中搜索这些元素直接子元素,并从匹配元素构造一个新的jQuery对象..find()和.children()方法类似,只是后者只沿DOM树向下移动一个级别.另请注意,与大多数jQuery方法一样,.children()不返回文本节点; 要获取包括文本和注释节点在内的所有子节点,请使用.contents().

http://api.jquery.com/children/

如果要对任何嵌套级别的所有后代执行操作,则可以执行此操作:

$('#id_of_an_element').find('*').attr('disabled', true);
Run Code Online (Sandbox Code Playgroud)

或使用后代选择器:

$('#id_of_an_element *').attr('disabled', true);
Run Code Online (Sandbox Code Playgroud)

  • 对于_properties_,可能需要稍微调整一下,例如`disabled`,这与jQuery的较新版本中的_attributes_不同."从jQuery 1.6开始,[.prop()](http://api.jquery.com/prop/)方法提供了一种显式检索属性值的方法,而.attr()则检索属性." (5认同)

use*_*716 5

由于您想影响所有后代,因此请执行以下操作:

$('#id_of_an_element *').each(function() {
    // do something
});
Run Code Online (Sandbox Code Playgroud)

但我很好奇您到底在做什么。

disabled对于许多元素类型,该属性都没有意义。您所做的任何事情都可能会受益于CSS的继承。

或者,如果您实际上想要该disabled属性,那么您也可以仅定位form元素。

$('#id_of_an_element :input').attr('disabled','disabled');
Run Code Online (Sandbox Code Playgroud)

  • +1关于:input选择器的好处。绝对比遍历所有后代有意义。 (2认同)