この単純なhtmlリストを考えてみましょう:
<ul>
<li><a href="http://google.com/">Test</a></li>
<li><a href="http://google.com/">Test2</a>
<ul>
<li><a href="http://google.com">Test2 - 1</a></li>
<li><a href="#3">Test2 - 2</a></li>
</ul>
</li>
</ul>
折りたたみ可能にするこの3つのjQuery行:
$('ul > li').on('click', function(e) {
e.preventDefault();
$(this).find('ul').slideToggle();
});
ここでの問題は、リンクがより深くクリックされた場合、リンクul
をたどりたいということです。jQuery では次のようになります。
if(this.nodeName != 'A') {
e.preventDefault();
}
現時点でnodeName
はLI
、最後にクリックされた子要素ではありません。
質問:より深い要素用の 2 番目のイベント ハンドラーを使用せずにこれを行うことは可能ですか? (つまり$('ul > li ul li a').click()
:)
私は成功せずに他の多くの(など)をe.stopPropagation
試しcss selectors
ました。ul > *
ul li