У меня есть «дерево» информации, которая отображается во многих вложенных списках (ul li ul li ....). Две проблемы:Как выбрать дочернюю строку ul, а не родительскую ul?
- Когда я нажимаю
<li>
, родительский ul также переключается, а также ребенок. - Если я нажимаю на
<li>
во вложенном списке, который не имеет в нем ul (например, Blue под Cranberry ниже), то родительский ul переключается, хотя это не должно соответствовать «li.has (ul) ».
Я пробовал различные селекторы JQuery, следующие (ul), children(). First() и т. Д. С теми же результатами. Не повезло - хотя я уверен, что я просто пропустил что-то простое здесь.
$('li.has(ul)').click(function() {
$(this).children('ul').toggle();
});
И HTML:
<ul class="unstyled" id="full_ontology">
<li>Apple</li>
<li>Banana</li>
<li>Cranberry
<ul>
<li>Blue</li>
<li>Red
<ul>
<li>Round</li>
<li>Square</li>
<li>Circular</li>
</ul>
</li>
<li>Purple</li>
</ul>
</li>
<li>Date</li>
<li>Elderberry
<ul>
<li>Yellow</li>
<li>Pink</li>
<li>Black</li>
</ul>
</li>
<li>Fig</li>
</ul>
Вы можете избежать всего этого, поставив одного слушателя на верхний UL, а затем используя цель события, чтобы определить, откуда появился клик. Затем вы можете свернуть или развернуть соответствующий список. – RobG