75 votes

Comment sélectionner TOUS les enfants (à n'importe quel niveau) d'un parent dans jQuery ?

Je dois .unbind() tous les éléments d'un nœud parent.

Comment puis-je sélectionner tous les enfants (à n'importe quel niveau) d'un parent ?

A essayé :

 $('#google_translate_element *').unbind('click');

mais cela ne fonctionne que pour le premier niveau des enfants...

Voici un cas de test

21voto

Nicola Peluchetti Points 38948

Je pense que tu pourrais faire :

 $('#google_translate_element').find('*').each(function(){
    $(this).unbind('click');
});

mais cela causerait beaucoup de frais généraux

1voto

Zoup Points 51

Il semble que le cas de test d'origine soit faux.

Je peux confirmer que le sélecteur #my_parent_element * fonctionne avec unbind() .

Prenons l'exemple suivant :

 <div id="#my_parent_element">
  <div class="div1">
    <div class="div2">hello</div>
    <div class="div3">my</div>
  </div>
  <div class="div4">name</div>
  <div class="div5">
    <div class="div6">is</div>
    <div class="div7">
      <div class="div8">marco</div>
      <div class="div9">(try and click on any word)!</div>
    </div>
  </div>
</div>
<button class="unbind">Now, click me and try again</button>

Et le bit jquery :

 $('.div1,.div2,.div3,.div4,.div5,.div6,.div7,.div8,.div9').click(function() {
  alert('hi!');
})
$('button.unbind').click(function() {
  $('#my_parent_element *').unbind('click');
})

Vous pouvez l'essayer ici : http://jsfiddle.net/fLvwbazk/7/

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