В соответствии с моим SO вопросом здесь , который превратился в jquery, чтобы решить эту проблему, но который может быть возвращен в YUI, если я правильно соображаю, мне нужен селектор для исключения потомков.
Предлагаемое решение говорит что-то вроде этого:
$( '.revealer:not(.revealer > .revealer)' );
Чтобы более точно соответствовать моей ситуации, поскольку у меня есть несколько фрагментов HTML для выполнения одного и того же теста, я обновил его следующим образом:
$( '#_revealerEl_0 .handle:not(#_revealerEl_0 .reveal .handle)' );
HTML-код, который он выбирает (на рисунке есть многочисленные копии одного и того же фрагмента на странице, каждый из которых должен обрабатываться отдельно - атрибут id назначается каждому «открывателю»):
<div class="revealer" id="#_revealerEl_0">
<div class="hotspot">
<a class="handle" href="javascript:;">A</a>
<div class="reveal">
<p>Content A.</p>
</div>
<div class="reveal">
<p>Content B.</p>
<!-- nested revealer -->
<div class="revealer">
<div class="hotspot">
<a class="handle" href="javascript:;">A</a>
<div class="reveal">
<p>Sub-content A.</p>
</div>
<div class="reveal">
<p>Sub-content B.</p>
</div>
</div>
</div>
</div>
</div>
</div>
В двух словах: мне нужно нацелить дескрипторы «верхнего уровня» в пределах «горячей точки» для каждого открывателя, а не на вложенных потомков с одинаковыми именами классов.
спасибо,
д
EDIT:
Также очень важно, чтобы я не начинал полагаться на свойства-потомки, такие как parentNode, childNode [x], nextSibling и т. Д., Потому что в настоящее время этот модуль достаточно гибок в том смысле, что его элементы «раскрыть» и «обрабатывать» могут находиться в другой разметке и по-прежнему быть целью - до тех пор, пока они находятся внутри «горячей точки».