2011-12-02 135 views
2

我有一个UL LI子列表切换。jQuery - 如何防止html隐藏元素?

ul 
    li a.trigger 
     ul.sub_list li 
    li 
    li 

事件 - 单击。

当我点击​​,ul.sub_list会显示。 要隐藏ul.sub_list。我需要点击​​或html元素。

问题是当用户点击ul.sub_list项目时,如何从hide()ul.sub_list停止html。

例如:http://jsfiddle.net/zYgfr/

这是如Facebook通知。

+0

http://jsfiddle.net/zYgfr/1/更新一次检查小提琴。 – Unknown

+0

谢谢,但它不会隐藏ul.sub_list当我点击其他区域比ul.sub_list(其他html区域)。 – aje

回答

1

添加这样的:

$(".sub_list a").click(function(event){ 
     event.stopPropagation(); 
}); 

的概念是,在默认情况下,当点击一个元素时,它通过DOM向上传播。

所以当单击链接时,最终在传递给每个父级后,事件将到达HTML根元素,触发沿其路径的任何事件处理程序。

为了阻止这一点,我们调用event.stopPropagation()。

+0

或者'.sub_list li'甚至更好,因此在通知区域周围的任何点击都不会消失 –