【发布时间】:2022-01-04 19:04:53
【问题描述】:
我在父 div 中创建了很多子 div。所有 div 定位,父 div 是绝对的,子 div 是相对的。父 div z-index 为 400,子 div 为 500。
当我单击任何子 div 时,jQuery 会使用单击功能检测父 div。我不明白为什么这些代码不起作用。
所以我希望任何人都可以帮助我解决这个问题。
父 div ID:“#cardslayer”
子 div 类:“.cardinlayer”
-HTML:
<body>
<div id="cardslayer"></div>
</body>
-CSS:
#cardslayer {
position: absolute;
width: 960px;
height: auto;
top: 0;
left: 0;
z-index: 400;
display: none;
}
.cardinlayer {
width: 100px;
height: 125px;
margin: 10px;
position: relative;
z-index: 500;
display: none;
}
-JQUERY:(以及一些带有 jquery 功能的 css 样式。)
var hazakstr = "";
var i = 0;
$("#button").click(function(){
hazakstr = "<center>";
for(i=0; i<22; i++) {
if(level_owner[i] == -1) {
hazakstr = hazakstr + "<div class='cardinlayer' id='house" + i + "' style='background: url(../houses/" + i + ".png); background-size: 100px 125px; background-repeat: no-repeat;'></div>";
}
}
hazakstr = hazakstr + "</center>";
$("#cardslayer").css("display", "block");
$("#cardslayer").html(hazakstr);
$(".cardinlayer").css("display", "inline-block");
i=((567 - $("#cardslayer").height()) / 2);
$("#cardslayer").css("height", 567 - i + "px");
$("#cardslayer").css("padding-top", i + "px");
});
在循环结束时将 html 添加到 #cardslayer。像这样的代码:
HTML:
<div id="cardslayer" style="display: block; height: 507px; padding-top: 60px;">
<center>
<div class="cardinlayer" id="house0" style="background: url("../houses/0.png") 0% 0% / 100px 125px no-repeat; display: inline-block;"></div>
<div class="cardinlayer" id="house1" style="background: url("../houses/1.png") 0% 0% / 100px 125px no-repeat; display: inline-block;"></div>
.
.
.
.
<div class="cardinlayer" id="house21" style="background: url("../houses/21.png") 0% 0% / 100px 125px no-repeat; display: inline-block;"></div>
</center>
</div>
毕竟,我为.cardinlayer 创建了点击函数。而且它不工作。
$(".cardinlayer").click(function(){
alert("Cardinlayer");
});
我为 .cardinlayer 尝试了这个点击功能
$("div").click(function(){
alert($(this).attr("id"));
});
当我点击一个 .cardinlayer 时,返回值为#cardslayer,而不是#house1 或任何#house。
#cardslayer 是父级,.cardinlayer(s) 是子级。
问题图片: https://i.imgur.com/DjWcIKK.jpg
红色是父母,蓝色是孩子。 所以当我点击任何卡片时 jquery 都没有被检测到。 Jquery 认为我点击了褪色的黑色背景。 (父母)。
我希望任何人都可以帮助我。 祝你有美好的一天,谢谢。
【问题讨论】:
-
考虑Event Delegation - 在
#cardslayer上收集click事件并使用event.target来确定点击了什么。
标签: javascript html jquery css onclick