jquery - 个别切换隐藏/显示和切换所有隐藏/显示不正确合作。任何提示?(jQuery)
问题描述
我为小型工作项目制作了过滤器,我需要解决的最后一个错误是隐藏/显示问题。当我通过单击标题显示一些注释并稍后使用该按钮时,该按钮会显示所有注释,但不会在第二次单击时将它们全部隐藏。您知道如何更改代码以使其正常工作吗?先感谢您!
/* toggle button all anotation*/
$('#makeVisible').on('click', function () {
$(this).text($(this).text() == 'Show' ? 'Show' : 'Hide');
$(".anotace").toggleClass("hide");
$(".anotace").toggleClass("show");
});
/*toggle one anotation to click its header */
$('.nazev').click(function(){
$(this).next(".anotace").slideToggle();
})
.anotace {
display: none;
}
.hide {
display: none;
}
.show {
display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<button id='makeVisible'> Show </button>
<div class='beseda'>
<div class="nazev">Lorem</div>
<div class="anotace">Ipsum </div>
</div>
<div class='beseda'>
<div class="nazev">Lorem</div>
<div class="anotace">Ipsum</div>
</div>
<div class='beseda'>
<div class="nazev">Lorem</div>
<div class="anotace">Ipsum</div>
</div>
解决方案
你可以尝试这样的事情:
$('#makeVisible').on('click', function() {
var s = $(this).text() != 'Show'
$(this).text(s ? 'Show' : 'Hide');
if(s)
$(".anotace:visible").slideToggle("show");
else
$(".anotace:not(:visible)").slideToggle("hide");
});
这只会显示/隐藏那些未显示/隐藏的内容。
因此,如果您单击 1 个Lorem
然后Show
按钮,那么剩余的 2 个将切换。
演示
/* toggle button all anotation*/
$('#makeVisible').on('click', function() {
var s = $(this).text() != 'Show'
$(this).text(s ? 'Show' : 'Hide');
if(s)
$(".anotace:visible").slideToggle("show");
else
$(".anotace:not(:visible)").slideToggle("hide");
});
/*toggle one anotation to click its header */
$('.nazev').click(function() {
$(this).next(".anotace").slideToggle();
})
.anotace {
display: none;
}
.hide {
display: none;
}
.show {
display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<button id='makeVisible'>Show</button>
<div class='beseda'>
<div class="nazev">Lorem</div>
<div class="anotace">Ipsum </div>
</div>
<div class='beseda'>
<div class="nazev">Lorem</div>
<div class="anotace">Ipsum</div>
</div>
<div class='beseda'>
<div class="nazev">Lorem</div>
<div class="anotace">Ipsum</div>
</div>
推荐阅读
- python - Django-wkhtmltopdf 返回非零退出状态 1
- angular - Zomato 中的 Angular 4 API HttpClient 发布/获取
- javascript - Javascript 中的命令 fillRect() 不起作用
- jquery - Bootstrap 4 ajax 成功消息快速闪烁
- python - UnboundLocalError:在 Discord.py 中赋值之前引用了局部变量“x”
- python - Python Unittest:确保对象不包含以前运行的数据
- twitter-bootstrap - 我的菜单有问题吗?我想知道哪个类元素功能需要在引导程序中使用菜单响应?当我缩小浏览器
- redis - redis集群是否使用一致性哈希
- google-apps-script - 如何在 1 个单元格中输入两个函数?
- clang++ - 检查用于在 Mac OS 上创建可执行文件的“链接器”的命令(由 clang++ 使用)