我认为您正在寻找的可能是 event.stopPropagation()
这是文档:http ://api.jquery.com/event.stopPropagation/
基本上,发生的事情是,当您单击 时<a>
,会触发 click 事件,但由于它包含在<li>
click 事件中,因此也会触发它。事件从子节点到父节点的过程称为事件冒泡。您可以使用 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/