185 votes

Comment obtenir toutes les entrées d’enfant d’un élément div (jQuery)

HTML :

J’ai besoin de sélectionner toutes les entrées dans la div particulière.

Cela ne fonctionne pas :

347voto

Nick Craver Points 313913

Utilisez-le sans plus de :

Le `` ne signifie que les enfants directs de l’élément, si vous souhaitez que tous les enfants quelle que soit la profondeur il suffit d’utiliser un espace.

85voto

mnemosyn Points 17378

Vous avez besoin

var i = $("#panel input"); 

ou, en fonction de ce que vous souhaitez exactement (voir ci-dessous)

var i = $("#panel :input"); 

l' > limitera à des enfants, vous voulez que tous les descendants.

EDIT: Comme Nick l'a souligné, il y a une différence subtile entre $("#panel input") et $("#panel :input).

La première fois pour récupérer uniquement les éléments de type d'entrée, c'est - <input type="...">, mais pas <textarea>, <button> et <select> - éléments. Merci Nick, ne savais pas moi-même et corrigé mon post en conséquence. Gauche les deux options, parce que je suppose que l'OP n'étais pas au courant non plus et -techniquement - demandé pour les entrées... :-)

53voto

Rob Willis Points 141

La méthode 'find' peut être utilisée pour obtenir toutes les entrées enfants d'un conteneur qui a déjà été mis en cache afin de sauvegarder sa recherche ultérieure (alors que la méthode 'children' obtiendra uniquement les enfants immédiats). par exemple

 var panel= $("#panel");
var inputs = panel.find("input");
 

38voto

Paulo Fidalgo Points 5207

Si vous utilisez un framework tel que Ruby on Rails ou Spring MVC, vous devrez peut-être utiliser des divs avec des accolades carrées ou d'autres caractères qui ne sont pas autorisés. Vous pouvez utiliser document.getElementById et cette solution fonctionne toujours si vous avez plusieurs entrées. avec le même type.

 var div = document.getElementById(divID);
$(div).find('input:text, input:password, input:file, select, textarea')
        .each(function() {
            $(this).val('');
        });
$(div).find('input:radio, input:checkbox').each(function() {
    $(this).removeAttr('checked');
    $(this).removeAttr('selected');
});
 

Cet exemple montre comment effacer les entrées, par exemple, vous devrez le changer.

9voto

Phil Rykoff Points 6650
 var i = $("#panel input");
 

devrait marcher :-)

le> ne va chercher que des enfants directs, pas d'enfants des enfants
the: sert à utiliser des pseudo-classes, par exemple. : vol stationnaire, etc.

pour en savoir plus sur les sélecteurs css disponibles de pseudo-classes, consultez la page suivante: http://docs.jquery.com/DOM/Traversing/Selectors#CSS_Selectors

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X