感谢 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(使用前将#替换为@)