web-dev-qa-db-fra.com

Comment sélectionner TOUS les enfants (quel que soit leur 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 tenté :

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

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

Ici il y a un cas de test

66
markzzz

Utilisez jQuery.find () pour rechercher les enfants de plus d’un niveau de profondeur.

Les méthodes .find () et .children () sont similaires, sauf que ces dernières ne parcourent qu'un seul niveau dans l'arborescence DOM.

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

Vous avez besoin du '*' Dans find():

Contrairement au reste des méthodes de traversée de l'arborescence, l'expression de sélecteur est requise dans un appel à .find (). Si nous avons besoin de récupérer tous les éléments descendants, nous pouvons passer au sélecteur universel '*' pour accomplir cela.

129
Konerak

Je pense que tu pourrais faire:

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

mais cela causerait beaucoup de frais généraux

17

Il semble que le cas de test original est faux.

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

Prenons le code HTML suivant comme exemple:

<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/

1
Zoup