【问题标题】:Jquery - show/hide/toggle multiple DIVsJquery - 显示/隐藏/切换多个 DIV
【发布时间】:2010-08-19 10:29:05
【问题描述】:

我希望实现以下目标:

  • 连续显示 5 张图片
  • 单击图像以显示与该图像相关的内容
  • 点击另一张图片显示相关内容,并隐藏之前的内容

这是我对图像的标记:

<div id="maps">

<div class="map-box"><h2>London &amp; South East</h2><a href="#"><img src="/img/map_london.jpg" /></a></div>
<div class="map-box"><h2>South West, Ireland and Wales</h2> <a href="#"><img src="/img/map_south_west.jpg" /></a> </div>    
<div class="map-box"><h2>South Central &amp; Home Counties</h2> <a href="#"><img src="/img/map_south_central.jpg" /></a> </div>     
<div class="map-box"><h2>North England, Northern Ireland &amp; Scotland</h2> <a href="#"><img src="/img/map_north.jpg" /></a> </div>        
<div class="map-box"><h2>Midlands</h2> <a href="#"><img src="/img/map_midlands.jpg" /></a> </div>       

</div>

当用户点击图片时,我想直接在其下方显示 DIV 的内容。像这样:

<div id="london">
<p>content london</p>
</div>

<div id="south-west">
<p>content south west</p>
</div>      

<div id="south-central">
<p>content south central</p>
</div>          

<div id="north">
<p>content north</p>
</div>      

<div id="midlands">
<p>content midlands</p>
</div>

这显然可以通过 jQuery 显示/隐藏来实现,但是从我在 Stack Overflow 上查看的所有示例中,我无法找到正确的组合。

非常感谢任何提示,谢谢。

【问题讨论】:

    标签: jquery show-hide


    【解决方案1】:

    我会给你的主播一个必须对应于他们所使用的&lt;div id="xxxxx"&gt;,如下所示:

    <a href="#london"><img src="/img/map_london.jpg" /></a>
    

    然后无论他们包裹在下面,说它看起来像这样:

    <div id="areas">
      <div id="london">
        <p>content london</p>
      </div>
      ....
    </div>
    

    你可以像这样使用 JavaScript:

    $(".map-box a").click(function(e) {
      $("#areas div").hide();
      $(this.hash).show();
      e.preventDefault();
    });
    $("#areas div:not(#london)").hide();  //show only london initially
    

    You can give it a try here,这方面的好处是它也可以很好地降级,如果 JavaScript 被禁用,它会简单地显示所有 div 并向下滚动到用户点击的那个。

    【讨论】:

    • +1 以获得最简单的解决方案,将它们全部隐藏,然后显示您想要的。
    • 是的,如果你可以修改输出并且这行得通,那么这绝对是简单的!
    • 是的——就是这样!非常好,完美运行。问题 - 这可以添加到过渡中吗? api.jquery.com/fadeIn -
    【解决方案2】:

    你可以有一个空的 div 和你的图像 div。单击图像时,您可以将关联的内容设置为空 div 的 innerHTML。

    <div>
    <div class="map-box"><h2>London &amp; South East</h2><a href="#"><img     src="/img/map_london.jpg" /></a></div> 
    <div id="london" />
    

    function OnImageClicked() 
    {
    $(london).innerHTML = "<p>content london</p>";
    }
    

    【讨论】:

    • 感谢 KhanS,但@Nick Craver 的回答对我来说是最简单的解决方案。
    【解决方案3】:

    这可能会有所帮助,它应该:

    • 选择类地图框的所有元素。
    • 添加定义匿名函数的点击事件

    执行以下操作:

    • 选择要更新的内容 div(不确定该名称)并将以下选择分配给它的 HTML
    • 向上“selected”元素的两个父元素,选择H2标签的html。

    $('.map-box').click(function(){ $('contentDiv').html($(this).parent().parent().find('h2').html())});

    【讨论】:

    • 感谢 Paul,但对我来说,@Nick Craver 的回答是最简单的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多