我想你正在尋找的可能是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/
請添加您的代碼以顯示/隱藏孩子UL。 – davehauser 2010-08-20 23:08:02
喜戴夫,感謝您的評論,是我應該這樣做:)我得到它的工作: $( '#DD一')點擊(函數(E){\t \t e.stopPropagation()。 }); – jasonflaherty 2010-08-23 19:51:27