あなたが探しているのはおそらく event.stopPropagation() だと思います
ドキュメントは次のとおりです。http://api.jquery.com/event.stopPropagation/
基本的には、 をクリックすると<a>
クリック イベントがトリガーされますが、クリック イベントに含まれているため<li>
、クリック イベントもトリガーされます。イベントが子から親に移動するこのプロセスは、イベント バブリングと呼ばれます。event.stopPropagation() を使用して停止できます。
次のような HTML 構造があるとします。
<ul>
<li class="reveal">One<br />
<a href="http://www.google.com" target="_blank">Google</a>
<ul>
<li>a</li>
<li>b</li>
<li>c</li>
</ul>
</li>
<li class="reveal">Two<br />
<a href="http://www.google.com" target="_blank">Google</a>
<ul>
<li>a</li>
<li>b</li>
<li>c</li>
</ul>
</li>
<li class="reveal">Three<br />
<a href="http://www.google.com" target="_blank">Google</a>
<ul>
<li>a</li>
<li>b</li>
<li>c</li>
</ul>
</li>
</ul>
さらに、CSS ルールがあるとします。
ul ul { display: none; }
この jQuery を適用すると、探している結果が得られるはずです。
$(function () {
$('.reveal').click(function() {
$(this).children('ul').slideToggle();
});
$('.reveal a').click(function(event) {
event.stopPropagation();
});
});
これが実際に動作しているライブデモです: http://jsfiddle.net/PaxTg/