Esta podría ser una pregunta de tipo sí/no.
Estoy tratando de deshabilitar absolutamente todos los elementos secundarios de un elemento en jquery.
llama
$('#id_of_an_element').children().do(function(){ do_something; }); llama recursivamente a todos los hijos de un elemento, o simplemente do_something a todos los descendientes directos de an_element ?
Se agradece la ayuda,
jose
Dado un objeto jQuery que representa un conjunto de elementos DOM, el método .children() nos permite buscar a través de los elementos secundarios inmediatos de estos elementos en el árbol DOM y construir un nuevo objeto jQuery a partir de los elementos coincidentes. Los métodos .find() y .children() son similares, excepto que el último solo viaja un nivel hacia abajo en el árbol DOM. Tenga en cuenta también que, como la mayoría de los métodos de jQuery, .children() no devuelve nodos de texto; para obtener todos los elementos secundarios, incluidos los nodos de texto y comentarios, use .contents().
Puede hacer esto si desea actuar sobre todos los descendientes en cualquier nivel de anidamiento:
$('#id_of_an_element').find('*').attr('disabled', true);o usando el selector de descendientes:
$('#id_of_an_element *').attr('disabled', true);Como desea afectar a todos los descendientes, simplemente haga esto:
$('#id_of_an_element *').each(function() { // do something });Pero me gustaría saber qué estás haciendo exactamente.
La propiedad disabled no tiene sentido para muchos tipos de elementos. Podría ser que cualquier cosa que estés haciendo se beneficie de la herencia de CSS.
O si realmente desea la propiedad disabled , también podría apuntar a elementos de form .
$('#id_of_an_element :input').attr('disabled','disabled');Tu puedes hacer
function disableChildren(obj) { obj.children().each(function(i, val) { disable(val); disableChildren(val); }); } disableChildren($("#id")); Ver .each No parece haber un método .do .
Tendrá que implementar la disable como una función para hacer lo que quiera cuando diga "desactivar"