我有一個多級無序列表。我正在嘗試將點擊處理程序附加到列表項中,並且當它被單擊時,我試圖向其添加類active
,但是當子列表項被單擊時,觸發了雙擊事件處理程序和它的父級處理程序的點擊處理程序,我認爲這是因爲它在各個層面都有相同的元素li
。我如何才能將活動僅附加到某個級別?如何僅通過jQuery獲取點擊的子列表項目?
這裏是一個代碼示例,但點擊的jsfiddle看到它在行動:
HTML標記
<ul>
<li>test</li>
<li>test
<ul>
<li>test</li>
<li>test
<ul></li>
<li>test</li>
<li>test</li>
</li>
<li>test</li>
<li>test</li>
</ul>
JAVASCRIPT
$("li").click(multiLevelClickHandler);
function multiLevelClickHandler(event)
{
event.preventDefault();
var $this = $(this);
console.log($this);
var $actives = $this.siblings().find(".active");
if($actives.length > 0){
$actives.removeClass('active');
setTimeout(function(){
$this.addClass('active');
}, 250);
} else {
$this.addClass('active');
}
}
這裏的jsfiddle:http://jsfiddle.net/zcLzA/
我嘗試將點擊處理程序單獨附加到每個級別的列表項目,但它總是附加到父級以及點擊列表項目。
這裏的問題是,無論我點擊什麼位置,父母也會被點擊,因爲該子項包含在父項中。想一想點擊頁面上的鏈接的場景。當你點擊鏈接時,你也點擊了正文。 –
我已更新我的答案以解決此問題。 –