2013-11-15 233 views
1

我是javaScript和jQuery的新手。當你點擊它的孩子時,如何調用父元素的click事件? 我有這樣的結構在我的代碼:當孩子被點擊時觸發父級點擊事件

<ul id="pc5"> 
    <li><a href="#">book</a> 
    </li> 
</ul> 

我想是這樣的:

$("a").click(ul.click); 

任何幫助,將不勝感激。

編輯:在我的ul點擊功能我需要UL ID屬性。這樣的事情:

ul.click(function(e){alert(e.target.id); 

所以當點擊鏈接時,event.target不是ul元素。

+4

點擊一個子元素,當父母的單擊事件也將因爲解僱除非兒童阻止事件傳播 –

+0

您不需要這樣做 - 除非使用'return false;'''''''''''''''''''''''''''''''''''''' 'a'點擊處理程序上的'event.stopPropagation'。 –

回答

1

當子元素被點擊時,你不需要觸發元素點擊事件,點擊事件bubbles如果你不要stop propagation

在這裏你可以看到它的工作:jsfiddle只需點擊藍色跨越,單擊事件會冒泡到UL :)

更新問題

如果你想在UL的ID,只需於:

$('ul li a').click(function() { 
    var id = $(this).closest('ul').attr('id'); 
}); 

這將是更容易,像這樣:

$('ul').click(function() { 
    var id = $(this).attr('id'); 
    alert(id); 
}); 

Working fiddle

這如果你在點擊,因爲它冒泡

+0

感謝您的回答。請參閱問題的編輯部分。 –

+0

查看更新回答 – Alex

+0

您正在UL上追加一個.click事件,在這種情況下,它是父級。 OP想要在孩子身上附加一個.click事件(根據他的問題 - 他可能需要重新設計,這取決於他需要做什麼)。 – user1021726

1

你應該在jQuery的瞭解event propagation應該工作。簡而言之:當用戶點擊a時,事件將在DOM樹中傳播。

+0

感謝您的回答,請參閱編輯部分的問題。 –

0

我有HTML這樣的:

<a href="?chk=1"> 
    <input id="CHK_1" name="CHK[1]" type="checkbox"> 
    <span>CHK 1</span> 
</a> 

哪裏複選框應該進行檢查/只從服務器端選中。 對於原因,我不知道,「點擊」不是從複選框冒泡鏈接, 所以我用的js代碼:

$(document).on('click', '[id^="CHK_"]', function (e){ 
    window.open($(this).parent().attr('href'), '_self'); 
    e.preventDefault(); 
});