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
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.
Je pense que tu pourrais faire:
$('#google_translate_element').find('*').each(function(){
$(this).unbind('click');
});
mais cela causerait beaucoup de frais généraux
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/