jQuery – 单击LI,显示/隐藏UL – 单击LI:a href,继续显示UL并在空白窗口中打开

感谢SO的精彩贡献者! 当你开始理解它时,jQuery会更酷。 🙂

所以我有一个LI,当点击显示/隐藏一个孩子UL。 我想要做的是能够点击LI内部的链接打开一个空白窗口,但也不能关闭子UL。 空白窗口打开

a[href^="http://"]').attr("target", "_blank"); 

但是,我不确定如何在LI上“返回:false”,因此当空白窗口打开时它不会关闭UL。 我希望用户能够在关闭空白窗口时看到他们所在的孩子UL。

如果不清楚,请告诉我。

谢谢!

我想你要找的东西可能就是event.stopPropagation()

这是文档: http : //api.jquery.com/event.stopPropagation/

基本上,正在发生的事情是,当您单击 ,click事件正在触发,但由于它包含在

  • ,因此也会触发click事件。 从子项到父项的事件过程称为事件冒泡。 您可以使用event.stopPropagation()来阻止它。

    假设你有一个像这样的HTML结构:

      

    此外,我们会说你有一个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/

    您可能希望查看事件订单 ,然后在适当的时间停止传播事件。