gpt4 book ai didi

jquery - 点击父元素触发子元素事件

转载 作者:行者123 更新时间:2023-12-01 06:22:11 24 4
gpt4 key购买 nike

我正在尝试创建在展开时显示文本并在收缩时再次隐藏的框,但我不知道如何仅触发子元素上的事件单击某个框时,单击任何框时,所有框的所有子项都会受到影响。

这是我的代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">

<style>
.div{
height: 50px;
width: 100px;
background-color: grey;
}

.cont{
}

.expa{
display:none;
}
</style>

<script src="jquery-1.11.1.js"></script>
</head>

<body>
<div class=div>
<p class=cont>Caption</p>
<p class=expa>String to show when expanded and hide when contracted</p>
</div>
<br>
<div class=div>
<p class=cont>Caption</p>
<p class=expa>String to show when expanded and hide when contracted</p>
</div>

<script>
$(document).ready(function(){
var contracted = true;
$(".div").click(function(){
if(contracted){
$(this).animate({height:"200px", width:"600px"}, 200);
$(".cont").css({display: 'none'});
$(".expa").delay(200).fadeIn(200);
contracted = false;
}else{
$(this).animate({height:"50px", width:"100px"}, 200);
$(".cont").delay(200).fadeIn(200);
$(".expa").css({display: 'none'});
contracted = true;
};
});
});
</script>
</body>
</html>

问题在于,单击任何 .div 元素都会触发 .cont 和 .expa 类的所有元素,而不仅仅是那些特定于所单击的 .div 的元素。

Stackoverflow 和其他地方的搜索仅处理通过与子元素交互来触发父元素事件的问题。

我摆弄了 .on()、.parent()、.children() 并浏览了 jQuery 文档,但没有找到任何东西。

最佳答案

您需要使用(在您的情况下)$(this).find(...) 使选择器与您点击的内容相关。使用类似 $(".cont") 将选择具有该类的所有元素,而 $(this).find(".cont") 将仅搜索后代元素您点击的内容。例如:

更改:

$(".cont").css({display: 'none'});
$(".expa").delay(200).fadeIn(200);

至:

$(this).find(".cont").css({display: 'none'});
$(this).find(".expa").delay(200).fadeIn(200);

关于jquery - 点击父元素触发子元素事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27385272/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com