子要素のリンクがクリックされたときにイベントをキャプチャし、 "highlightchild"というクラスを追加しようとしています。また、子要素のリンクが存在しないかどうかをチェックしたい場合は、子要素が存在しない場合、つまり、親の「highlightparent」を持つ「第3レベル」のハイライトが必要です。 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が何を達成したいと思っているのかは分かりません。しかし、イベントの委任は、何千ものイベントハンドラを追加するよりも好ましいはずです –