我在rails视图中有动态数据,所有div都具有相同的名称; 'allData',其中包含大量信息,因此我没有显示它,我想在单击“显示”时显示该特定div而不是所有div,但它显示所有div,我希望能够仅显示该目标div我点击了
$('.show'').on('click', (event) =>{
$('.allData').toggle();
$(event.currentTarget).closest('.allData').toggle();
})
<div class='eachData'>
<div class='header'>
<div class='show'> show</div>
<div class='numberOfdata'> 100</div>
</div>
<div class='allData; display:none'>
"foobar all data is here"
</div>
</div>
<div class='eachData'>
.......
</div>
<div class='eachData'>
.......
</div>
答案 0 :(得分:2)
您的closest
通话是在正确的轨道上,但是您使用的方式不正确。首先,您要查找包含.eachData
的容器(<div class="show">
),为此使用closest
:
let container = $(event.currentTarget).closest('.eachData');
然后您在container
中搜索要使用find
进行切换的.allData
:
container.find('.allData').toggle();
因此,您使用closest
向上移动节点树,然后使用find
向下移动节点。
顺便说一句,这个:
<div class='allData; display:none'>
应为:
<div class="allData" style="display: none">
class
属性包含以空格分隔的CSS类名称,原始CSS进入style
属性,并以分号分隔。
答案 1 :(得分:1)
您在div上的内联样式应如下:
<div class="allData" style="display: none">
然后尝试以下操作:
$('.show').on('click', function() {
$(document).find('.eachData .allData:visible').hide('fast');
$(this).parent().closest('.allData').show('fast');
});