jQuery 显示和隐藏 div
当我单击页脚中的链接时,我尝试使用 jQuery 显示和隐藏两个覆盖 DIV(请参阅下面的标记)。如果我单击其中一个链接,jQuery 将按预期运行:它会隐藏另一个覆盖层并显示与我单击的链接相匹配的 DIV。如果我单击“条款和条件”,然后再次单击“条款和条件”,它会隐藏 DIV,然后再次显示相同的 DIV。如果 DIV 已经可见,我想隐藏它。 (我最初尝试了 .toggle,行为是相同的。)
页脚中的链接:
<a href="#terms">Terms and Conditions</a>
<a href="#privacy">Privacy Policy</a>
HTML 中的 DIV:
<div class="meta" id="terms">Terms and Conditions</div>
<div class="meta" id="privacy">Privacy Policy</div>
jQuery:
$('footer a').click(function(e){
$('.meta').hide();
var div_to_show = $(this).attr('href');
if($(div_to_show).is(':visible')) {
// hide corresponding div if it's visible
$(div_to_show).hide('fast');
} else {
// show corresponding div if it's not visible
$(div_to_show).show('fast');
}
e.preventDefault();
});
这有效:
if($(this.hash).is(':visible')) {
$('.meta').hide('fast');
} else {
$('.meta').hide('fast');
$(this.hash).show('fast');
}
e.preventDefault();
I'm trying to use jQuery to show and hide two overlay DIVs when I click on links in the footer (see markup below). The jQuery behaves as expected if I've clicked on one of the links: it hides the other overlay and shows the DIV that matches the link I clicked on. If I click on Terms and Conditions and then click on Terms and Conditions again, it hides the DIV and then shows the same DIV again. I want to hide the DIV if it's already visible. (I initially tried .toggle and the behavior was the same.)
Links in the footer:
<a href="#terms">Terms and Conditions</a>
<a href="#privacy">Privacy Policy</a>
DIVs in the HTML:
<div class="meta" id="terms">Terms and Conditions</div>
<div class="meta" id="privacy">Privacy Policy</div>
jQuery:
$('footer a').click(function(e){
$('.meta').hide();
var div_to_show = $(this).attr('href');
if($(div_to_show).is(':visible')) {
// hide corresponding div if it's visible
$(div_to_show).hide('fast');
} else {
// show corresponding div if it's not visible
$(div_to_show).show('fast');
}
e.preventDefault();
});
This worked:
if($(this.hash).is(':visible')) {
$('.meta').hide('fast');
} else {
$('.meta').hide('fast');
$(this.hash).show('fast');
}
e.preventDefault();
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
在检查单击的链接的关联 div 是否为
:visible
之前,您将隐藏这两个 div。You're hiding both divs before checking if the clicked link's associated div is
:visible
.正确的方法是:
.toggle()
演示
The right way to do it:
.toggle()
Demo
为什么不设置一个可见的标志?
Why don't you set a visible flag?
这是显示隐藏 div 的代码...
JsFiddle
和 template/html 文件中。
Here is the code to show hide divs...
JsFiddle
and in the template/html file.