以下示例有效。 (例子来自w3cschools,并且有点被黑了。) 单击DIV中的任何位置将导致地址类div消失。 但是,将脚本的第三行更改为
$("button").click(function(){
而不是“div”,它只是像纸镇一样坐在那里。我错过了什么。
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>
<script>
$(document).ready(function(){
$("div").click(function(){
$(this).children(".address").toggle("slow");
});
});
</script>
<style type="text/css">
div.ex
{
background-color:#e5eecc;
padding:7px;
border:solid 1px #c3c3c3;
}
</style>
</head>
<body>
<h3>Island Trading</h3>
<div class=ex>
<button>Hide me</button>
<div class=address>
<p>Contact: Helen Bennett<br>
Garden House Crowther Way<br>
London</p>
</div>
</div>
<h3>Paris spécialités</h3>
<div class=ex>
<button class="hide">Hide me</button>
<div class=address>
<p>Contact: Marie Bertrand<br>
265, Boulevard Charonne<br>
Paris</p>
</div>
</div>
</body>
</html>
答案 0 :(得分:2)
更改
$(this).children(".address").toggle("slow");
类似于:
$('.address').toggle("slow");
OR
$(this).siblings(".address").toggle("slow");
一旦你使监听器对button
元素采取行动,.address
就不再是按钮的子节点了。这是一个兄弟姐妹。如果您的网页上有多个.address
课程,则必须使用兄弟姐妹。
答案 1 :(得分:0)
试试这个:
$("button").on("click", function(){
$(this).parent().children(".address").toggle("slow");
});
答案 2 :(得分:0)
$(this).parent().children(".address").toggle("slow");
按钮没有孩子
答案 3 :(得分:0)
$("div").click(function(){
$(this).children(".address").toggle("slow");
});
上述代码的含义是,当在div容器中单击触发器时,它将通过其子代码来匹配“地址”类属性。
但是,如果您只是将$(“div”)更改为$(“button”),但按钮元素中不会显示子项。没有匹配的切换功能,只需忽略它。
您应该将代码更改为:
$("button").click(function () {
$(this).next(".address").toggle("slow");
});
找到按钮元素的下一个兄弟。那是你想要的元素。