하위 요소 링크를 클릭 할 때 이벤트를 캡처하고 "highlightchild"라는 클래스를 추가하려고합니다. 또한 자식 요소 링크가 존재하지 않거나 존재하지 않는지 확인하고 싶습니다. 자식 요소가 없으면 부모의 "highlightparent"가있는 "third level"강조 표시가 나타납니다. jquery를 사용하여 어떻게 할 수 있습니까?jquery를 사용하여 클릭 한 하위 링크를 캡처하는 방법은 무엇입니까?
$(document).ready(function() {
$('.menu ul').hide();
$('.menu .arrowUp').click(function() {
$('.menu ul').hide();
$(this).find(".third-level").toggle();
});
});
HTML
<ul class="menu">
<li class="arrowUp"><a href="#">link1</a>
<ul class="third-level" >
<!-- third level non-active -->
<li class="arrowUp"><a href="/somelink/">Some Link</a></li>
</ul>
</li>
<li class="arrowUp"><a href="#">link2</a>
<ul class="third-level" >
<!-- third level non-active -->
<li class="arrowUp"><a href="/links2/">some Links 2</a></li>
</ul>
</li>
<li class="arrowUp"><a href="#">link3</a>
<ul class="third-level" >
<!-- third level non-active -->
<li class="arrowUp"><a href="/Agri/">Agricultural</a></li>
<!-- third level non-active -->
<li class="arrowUp"><a href="/sugar/">Sugar</a></li>
<!-- third level non-active -->
<li class="arrowUp"><a href="/bbc/">Coffee</a></li>
<!-- third level non-active -->
<li class="arrowUp"><a href="/cnn/">Energy</a></li>
<!-- third level non-active -->
<li class="arrowUp"><a href="funstuff">Fun stuff</a></li>
</ul>
</li>
<li class="arrowUp"><a href="#">link4</a></li>
<li class="arrowUp"><a href="#">link5</a></li>
<li class="arrowUp"><a href="#">link6</a></li>
</ul>
나는 이것이 모든 노드에 리스너를 추가하는 것보다 나은 대안이라고 생각한다. 내 유일한 제안은 쿼리, 제거, 추가 대신 $ (this) .hasClass (".highlightchild")에 대한 검사를 수행 할 수 있다는 것입니다. – Newtang
@Newtang : 이전에 클릭 한 요소에서 클래스를 제거하기위한 것입니다. '$ (this) .hasClass (".highlightchild")'는 이전에 클릭 한 요소인지를 확인하는 데 도움이됩니다. OP가 내 솔루션이 적합한 지 여부를 달성하기 위해 무엇을 원 하긴하지만 실제로 확신 할 수는 없습니다. 그러나 이벤트 위임은 수천 개의 이벤트를 추가하는 것보다 선호되어야합니다. –