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

2024-05-05

感谢 SO 的出色贡献者!当您开始了解 jQuery 时,它会变得更酷。 :)

所以我有一个 LI,单击时会显示/隐藏子 UL。我想做的是能够单击 LI 内的链接,打开一个空白窗口,但也不会关闭子 UL。空白窗口打开完成

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

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

如果不清楚,请告诉我。

Thanks!


我认为您正在寻找的可能是 event.stopPropagation()

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

基本上,发生的事情是当您单击<a>,点击事件正在触发,但由于它包含在<li>点击事件也会在其上触发。事件从子级传递到父级的过程称为事件冒泡。您可以使用 event.stopPropagation() 来停止它。

假设您有一个如下所示的 HTML 结构:

<ul>
    <li class="reveal">One<br />
        <a href="http://www.google.com" target="_blank">Google</a>
            <ul>
                <li>a</li>
                <li>b</li>
                <li>c</li>
        </ul>
    </li>
    <li class="reveal">Two<br />
        <a href="http://www.google.com" target="_blank">Google</a>
            <ul>
                <li>a</li>
                <li>b</li>
                <li>c</li>
        </ul>
    </li>
    <li class="reveal">Three<br />
        <a href="http://www.google.com" target="_blank">Google</a>
            <ul>
                <li>a</li>
                <li>b</li>
                <li>c</li>
        </ul>
    </li>
</ul>

此外,我们会说你有一个 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/ http://jsfiddle.net/PaxTg/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jQuery - 单击 LI,显示/隐藏 UL - 单击 LI:a href,继续显示 UL 并在空白窗口中打开 的相关文章

随机推荐