<div class="wrap">
<div class="Level2">Click me</div>
<div class="Level3">Information</div>
</div>
<div class="wrap">
<div class="Level2">Click me</div>
<div class="Level3">Information</div>
</div>
<div class="wrap">
<div class="Level2">Click me</div>
<div class="Level3">Information</div>
</div>
<div class="wrap">
<div class="Level2">Click me</div>
<div class="Level3">Information</div>
</div>
的jQuery
$('.Level2').click(function(){
$('.Level2').closest('.Level3').fadeToggle();
});
我想为fadeIn和fadeOut选择最接近的level3,但不起作用。我的语法错了吗?在线示例:http://jsfiddle.net/meEUZ/
答案 0 :(得分:28)
尝试遍历DOM元素祖先的.next()
而不是.closest()
。
此外,您应该使用$(this)
而不是$('.Level2')
,否则它会选择所有.Level2
而不是点击的。{/ p>
你也可以选择这样的事情 - $(this).closest('.wrap').find('.Level3').fadeToggle();
。
干杯!
答案 1 :(得分:14)
jQuery的.closest()方法不会选择兄弟选择器,而是父母。看起来您正在寻找.siblings()方法。
$('.Level2').click(function(){
$(this).siblings('.Level3').fadeToggle();
});
答案 2 :(得分:7)
最接近dom树。它找不到兄弟姐妹的东西。你可以在父母身上使用find来实现这个目标
$('.Level2').click(function(){
$(this).parent().find('.Level3').fadeToggle();
});
答案 3 :(得分:2)
是的,在Jquery中有很多方法可以找到最接近的 DOM 元素
$('.Level1').click(function(){
$(this).next('.Level3').fadeToggle();
});
$('.Level2').click(function(){
$(this).closest('.wrap').find('.Level3').fadeToggle();
});
$('.Level4').click(function(){
$(this).parent().find('.Level3').fadeToggle();
});
$('.Level5').click(function(){
$(this).siblings('.Level3').fadeToggle();
});
&#13;
.level{background:Red;width:200px;height:40px;}
.Level3{background:blue;width:300px;height:50px;}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wrap">
<div class="Level1 level">Click me()sing next)</div>
<div class="Level3">Information</div>
</div>
<div class="wrap">
<div class="Level2 level">Click me(Using closest)</div>
<div class="Level3">Information</div>
</div>
<div class="wrap">
<div class="Level4 level">Click me(Usingh Parent)</div>
<div class="Level3">Information</div>
</div>
<div class="wrap">
<div class="Level5 level">Click me(Using Sibiling)</div>
<div class="Level3">Information</div>
</div>
&#13;
答案 4 :(得分:0)
是的! closest
从您传递给它的选择器开始DOM搜索,并向上移动DOM层次结构,搜索父项/祖先。请改用siblings
或next
。
像这样:
$('.Level2').click(function(){
$(this).siblings('.Level3').fadeToggle();
});
答案 5 :(得分:0)
从以下代码中获得清晰的思路:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$(document).ready(function () {
$(".add").on("click", function () {
var v = $(this).closest(".division").find("input[name='roll']").val();
alert(v);
});
});
</script>
<?php
for ($i = 1; $i <= 5; $i++) {
echo'<div class = "division">'
. '<form method="POST" action="">'
. '<p><input type="number" name="roll" placeholder="Enter Roll"></p>'
. '<p><input type="button" class="add" name = "submit" value = "Click"></p>'
. '</form></div>';
}
?>