jQuery来显示和隐藏div

时间:2011-04-21 21:52:17

标签: jquery html hide hyperlink show

当我点击页脚中的链接时,我正在尝试使用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();

4 个答案:

答案 0 :(得分:2)

在检查点击链接的关联div是否为:visible之前,您隐藏了两个div。

答案 1 :(得分:1)

为什么不设置可见标志?

var isVisible = false;
$('footer a').click(function(e){
    $('.meta').hide();
    var div_to_show = $(this).attr('href');
    if(isVisible) {
        // hide corresponding div if it's visible
        $(div_to_show).hide('fast');
    } else {
        isVisible = true;
        $(div_to_show).show('fast');
    }
    e.preventDefault();
});

答案 2 :(得分:1)

正确的方法:

var $meta = $('.meta');
$('footer a').click(function(e){
    var $div = $($(this).attr('href'));
    $meta.not($div).hide();
    $div.toggle('fast');
    return false;
});
  • 使用.toggle()
  • 适当时缓存jQuery选择器

Demo

答案 3 :(得分:-1)

以下是显示隐藏divs的代码...

JsFiddle

$(document).ready(function () {
    $("#message_div").hide();
    //attach click event to buttons
    $('.button-show').click(function () {

        /**
         * when show button is clicked we call the show plugin
         * which scales the box to default size
         * You can try other effects from here: http://jqueryui.com/effect/
         */
        $("#message_div").show();

    });

    $('.button-hide').click(function () {

        //same thing happens except in this case we hide the element
        $("#message_div").hide();

    });
});

并在模板/ html文件中。

<div id="message_div" style="width:80%; margin:0 auto; color:black;">
    <h1> This is Div One </h1>
    <p>  Your Content</p>
 <br />
<input type="button" value="Discard" class="button-hide" />
 <br />
</div>
<div style="width:80%; margin:0 auto; color:black; margin-top:25px">
<input type="button" value="Send Message" class="button-show"  />   
</div>
<div style="width:80%; margin:0 auto; margin-top:25px">
    <h1>This is Div Two</h1>
<p>Your Content</p>
</div>