javascript - 当存在子元素时,div 上的“onClick”事件不会发生

标签 javascript jquery html css

我正在为自己建立一个新网站,看起来像这样..

enter image description here

HTML

<div id="row1">
<div class="orange" onClick="itemLoad()">
<img src="img/game/wacky.jpg" width="140" />
<p><strong>A Day At The Races (2014)</strong><br>
3 x 8-bit instruments</p>
</div>

<div class="blue" onClick="itemLoad()">
<img src="img/game/dott.jpg" width="140" />
<p><strong>Back to the Mansion! (2013)</strong><br />
fl, ob, cl, bsn, xyl, vibes, vln, vla, vlc.</p>
</div>

.... etc etc etc.

CSS(除背景颜色外,所有框都具有相同的 CSS)

.orange{
width:150px;
height:150px;
background:#F90;    
display:inline-block;
margin:10px;
cursor:pointer;
box-shadow:#CCC 4px 4px 4px;
border-radius: 10px;
padding:10px;
font-family:Arial, Helvetica, sans-serif;
font-size:11px;
line-height:1.5;
}

基本上,当您点击其中一个框时,它会显示一个内容 DIV,根据它所在的行向您介绍该音乐。

JQuery

function itemLoad(){
if($(event.target).parent().is("#row1")){
    $("#row1content").fadeIn("slow");
}else if($(event.target).parent().is("#row2")){
    $("#row2content").fadeIn("slow");
}
}

当方框为空时,此功能绝对可以正常工作,但当方框内有内容时,如您在图片中所见,该功能仅在我单击填充时运行。我以前从来没有遇到过这个问题。任何帮助将不胜感激:)

最佳答案

event.target 是被点击的元素,当你点击一个子元素时,这就是 event.target 是什么,所以它不会始终如一地给你正确的元素,或正确的父元素,因为 event.target 不引用事件处理程序绑定(bind)到的元素,而是引用事件起源的元素。

此外,您依赖于全局事件,它不是跨浏览器的。

您要做的是使用适当的事件处理程序,this

$('.blue, .orange').on('click', function() {
    if ( $(this).parent().is("#row1") ){
        $("#row1content").fadeIn("slow");
    } else if ( $(this).parent().is("#row2") ){
        $("#row2content").fadeIn("slow");
    }
});

应该注意的是,有一种最明确的更动态的方法可以做到这一点,为所有目标元素赋予相同的类,然后根据索引或 DOM 中的位置淡化,而不是根据父 ID 来定位每个元素.

关于javascript - 当存在子元素时,div 上的“onClick”事件不会发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26087049/

相关文章:

Javascript 搜索 Excel 文件

jquery - 如何将 JSON 对象传递给 ASP.NET MVC 4 中的 Controller 方法

html - 文本输入边框在表单中被截断

html - 如何更改 jQuery 动画中的文本颜色?

javascript - 如何覆盖 og :url meta tag with reactjs

javascript - 将代理与 mobx 存储结合使用

javascript - 错误 : Uncaught SyntaxError: Unexpected token [

javascript - 如果选项值在数组中,jQuery 添加输入选项类

javascript - 如何使用图像或文本更改单选按钮以及如何使用 onclick

html - 为什么 Django forms.TextField 占用这么多空间,即使文本输入区域很小?