2013-11-15 62 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(); 
});