【发布时间】:2016-03-19 15:57:36
【问题描述】:
我无法在所有具有“card”类的 DIV 上触发相同的事件,如下面的屏幕截图所示:
<div class="row">
<div class="col-md-1">
<div class="margin"></div>
<div class="card">
<div class="front">CardClick</div>
<div class="back">1</div>
</div>
</div>
<div class="col-md-1">
<div class="margin"></div>
<div class="card">
<div class="front">CardClick</div>
<div class="back">2</div>
</div>
</div>
<div class="col-md-1">
<div class="margin"></div>
<div class="card">
<div class="front">CardClick</div>
<div class="back">4</div>
</div>
</div>
<div class="col-md-1">
<div class="margin"></div>
<div class="card">
<div class="front">CardClick</div>
<div class="back">5</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-1">
<div class="margin"></div>
<div class="card">
<div class="front">CardClick</div>
<div class="back">4</div>
</div>
</div>
<div class="col-md-1">
<div class="margin"></div>
<div class="card">
<div class="front">CardClick</div>
<div class="back">5</div>
</div>
</div>
<div class="col-md-1">
<div class="margin"></div>
<div class="card">
<div class="front">CardClick</div>
<div class="back">6</div>
</div>
</div>
<div class="col-md-1">
<div class="margin"></div>
<div class="card">
<div class="front">CardClick</div>
<div class="back">4</div>
</div>
</div>
</div>
我将我的处理程序设置为:
$(".card").click(function() {
alert("clicked...");
});
问题是警告框仅针对以下屏幕截图中标记为黑色的那些 DIV 显示。对于所有其他框,alert("clicked...") 行不会执行事件。
即使是在顶行标记为 5 的框,也只有在单击其右上角时才会显示警告框。单击此框中的任何其他位置都不会触发警报。 (底行的方框没有这个问题,如果在其中任意位置单击,它们的警报就会出现。
这是否与事件冒泡或事件捕获有关?如何修复它,以便为所有具有“card”类的 DIV 调用警报?
更新: 相关的 CSS 如下所示:
.card {
width: 100px;
height: 100px;
position: absolute;
-webkit-transition: -webkit-transform 1s;
-moz-transition: -moz-transform 1s;
-o-transition: -o-transform 1s;
transition: transform 1s;
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
-o-transform-style: preserve-3d;
transform-style: preserve-3d;
-webkit-transform-origin: 50% 50%;
}
.card div {
display: block;
height: 100%;
width: 100%;
line-height: 100px;
color: black;
text-align: center;
font-weight: bold;
font-size: 16px;
position: absolute;
-webkit-backface-visibility: hidden;
-moz-backface-visibility: hidden;
-o-backface-visibility: hidden;
backface-visibility: hidden;
}
.card .front {
background: white;
border-color: black;
border-width: 3px;
border-style: solid;
color:black;
}
.card .back {
background: black;
color:white;
-webkit-transform: rotateY( 180deg );
-moz-transform: rotateY( 180deg );
-o-transform: rotateY( 180deg );
transform: rotateY( 180deg );
}
.margin {
margin-top: 200%;
}
更新 - 向问题添加了 HTML 代码。早些时候我在那里有一个截图。 “col-md-1”等是 twitter bootstrap 帮助布置网格的方式。
【问题讨论】:
-
你能用你的代码 HTML 和 CSS 做一个 jsfiddle 吗?
-
这个问题可能不是js问题,而是css/html问题。
-
是的,没有关于您如何以不同方式设计黑白卡片的线索。我怀疑 CardClick 是“虚拟”div,而黑卡是“卡片”。 HTML/CSS 问题也是如此,其中“卡片”的宽度和高度仅为 0(无可点击目标)。
-
click类在哪里?
标签: javascript jquery css jquery-events event-bubbling