我有一个div,我已经附加了一个onclick事件。在这个div中有一个带有链接的标签。当我点击链接时,来自div的onclick事件也被触发。我怎么能禁用这一点,如果链接被点击在div onclick不被解雇?
脚本:
$(document).ready(function(){
$(".header").bind("click", function(){
$(this).children(".children").toggle();
});
})
html代码:
<div class="header">
<a href="link.html">some link</a>
<ul class="children">
<li>some list</li>
</ul>
</div>
这里的回答太字面化了。如何将这些答案扩展到有许多子元素的场景,而不仅仅是一个<a>标记?这里有一种方法。
假设您有一个图片库,该图片库的背景是黑色的,并且照片位于浏览器的居中。当你点击黑色背景(但不是它里面的任何东西)时,你希望覆盖层关闭。
下面是一些可能的HTML:
<div class="gallery" style="background: black">
<div class="contents"> <!-- Let's say this div is 50% wide and centered -->
<h1>Awesome Photos</h1>
<img src="img1.jpg"><br>
<img src="img2.jpg"><br>
<img src="img3.jpg"><br>
<img src="img4.jpg"><br>
<img src="img5.jpg">
</div>
</div>
下面是JavaScript的工作原理:
$('.gallery').click(
function()
{
$(this).hide();
}
);
$('.gallery > .contents').click(
function(e) {
e.stopPropagation();
}
);
这将停止来自每个research .gallery .contents中的元素的单击事件,因此画廊只在您单击褪色的黑色背景区域时关闭,而在内容区域时不会关闭。这可以应用于许多不同的场景。