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

Comment puis-je sélectionner tous les enfants (à tous les niveaux) d'un parent?

A tenté :

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

Mais ça ne marche que pour le premier niveau enfant ...

Ici il y a un cas de test

75
markzzz 4 oct. 2011 à 17:35

3 réponses

Meilleure réponse

Utilisez jQuery.find () pour trouver des enfants à plusieurs niveaux en profondeur.

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

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

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

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

135
Konerak 4 oct. 2011 à 13:41

Je pense que vous pourriez faire:

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

Mais cela causerait beaucoup de frais généraux

19
Nicola Peluchetti 4 oct. 2011 à 13:44

Il semble que le scénario de test d'origine soit erroné.

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

Prenons l'exemple du code HTML 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/

1
Zoup 25 sept. 2018 à 20:11