【问题标题】:Jquery Collapse/Display Divs - Close all other elements then open selected itemJquery Collapse/Display Divs - 关闭所有其他元素然后打开所选项目
【发布时间】:2013-04-24 17:55:40
【问题描述】:

问题

我的脚本应该隐藏所有具有“gallery-collapse”类的元素,然后根据点击的链接打开选择的内容。

目前,在项目之间单击时有时会显示多个 div。

理想

理想情况下,它会确保所有其他元素都关闭,与单击的项目互斥。 (即单击带有“speaker1-expand”的锚点将关闭所有具有“gallery-collapse”类的元素,然后切换“speaker1-content”)

脚本:

<script>
j(".speaker1-content, .speaker2-content, .speaker3-content, .speaker4-content, .speaker5-content, .speaker6-content, .speaker7-content").hide();
j('.speaker1-expand').click(function(){
    j(".gallery-collapse").hide();
    j('.speaker1-content').slideToggle('slow');
});
j('.speaker2-expand').click(function(){
    j(".gallery-collapse").hide();
    j('.speaker2-content').slideToggle('slow');
});
j('.default-expand').click(function(){
    j(".gallery-collapse").hide();
    j('.speaker-default').slideToggle('slow');
});
</script>

JS 小提琴

http://jsfiddle.net/2SCJe/10/

【问题讨论】:

  • 所以所有其他元素在单击时都应该向上滑动,对吗?
  • 是的,其他元素应该先隐藏。它本质上是一个切换,先隐藏其他 div,然后再显示目标。

标签: javascript jquery html css


【解决方案1】:

您可以将代码缩短为:

j("[class*='-content']").hide();

j('[class^="speaker"]').click(function(){
    //Find the right class to toggle
    var class = j(this).attr("class").split("-")[0];
    class += "-content"; // <---This is now the correct class to slide down

    //re hide everything
    j("[class*='-content']").hide(); // <--- re-hide everything
    j(".gallery-collapse").hide();

    //Show it
    j("." + class).slideToggle("slow");
});

Fiddle 演示概念:http://jsfiddle.net/Y6mHj/

【讨论】:

  • 这似乎不起作用。尝试整合代码的要点。
  • 介意提琴吗?可以更快地为您启动并运行它! :)
  • 没关系。我忘了用 j 替换你的一个 $。您的解决方案效果很好。
  • 哈哈,很高兴听到!祝你一切顺利。
  • @tymeJV 在同一个示例中,我希望 div 仅向上折叠并仅向下扩展。知道如何实现这一目标吗?
猜你喜欢
  • 2020-03-01
  • 1970-01-01
  • 2019-02-25
  • 2020-02-29
  • 2017-03-29
  • 1970-01-01
  • 2016-05-30
  • 2019-03-27
  • 1970-01-01
相关资源
最近更新 更多