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
3 réponses
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.
Je pense que vous pourriez faire:
$('#google_translate_element').find('*').each(function(){
$(this).unbind('click');
});
Mais cela causerait beaucoup de frais généraux
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/
Questions connexes
De nouvelles questions
javascript
Pour des questions concernant la programmation dans ECMAScript (JavaScript / JS) et ses divers dialectes / implémentations (hors ActionScript). Veuillez inclure toutes les balises pertinentes dans votre question; par exemple, [node.js], [jquery], [json], etc.