Как выбрать всех детей (на любом уровне) от родителя в jQuery?
Я должен .unbind()
все элементы из родительского узла.
Как я могу выбрать всех детей (на любом уровне) от родителя?
пробовал :
$('#google_translate_element *').unbind('click');
но это работает только для первого детского уровня...
здесь есть тестовый случай
3 ответа:
использовать jQuery.найти() найти детей более одного уровня глубокий.
The .находить и. детей() методы аналогичны, за исключением того, что последний перемещается только на один уровень вниз по дереву DOM.
$('#google_translate_element').find('*').unbind('click');
вам нужно
'*'
infind()
:В отличие от остальных методов обхода дерева, селектор выражение требуется в вызове .находить.)( Если нам нужно получить все потомки элементов, мы можем передать в универсальный селектор '*'для достижения этой цели.
Я думаю, что вы могли бы сделать:
$('#google_translate_element').find('*').each(function(){ $(this).unbind('click'); });
но это вызовет много накладных расходов
кажется, что исходный тестовый случай неверен.
Я могу подтвердить, что селектор
#my_parent_element *
работает сunbind()
.возьмем в качестве примера следующий html:
<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>
и бит jquery:
$('.div1,.div2,.div3,.div4,.div5,.div6,.div7,.div8,.div9').click(function() { alert('hi!'); }) $('button.unbind').click(function() { $('#my_parent_element *').unbind('click'); })
вы можете попробовать его здесь: http://jsfiddle.net/fLvwbazk/7/