首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >打开div onclick并关闭其他div

打开div onclick并关闭其他div
EN

Stack Overflow用户
提问于 2015-12-02 22:56:11
回答 2查看 237关注 0票数 0

在我的网站上,我使用了几个名为"ligne“的div。在这些div中,我有5个div,其中一个div ".content“是隐藏的。当点击".ligne“时,它显示了被点击的".ligne”的隐藏div ".content“。当点击另一个".ligne“时,它会关闭所有打开的".content”,并显示被点击的".ligne“的隐藏div ".content”。

重要的是,当在'.content‘里面点击时,内容不会slideUp。

我的问题是,当".content“打开时,我想关闭打开的".content",当再次单击".ligne”时,而不是在".content“内部。

它起作用了,它关闭了".content",但是oppen再次打开了它。

下面是一个jsfiddle,可以看到它的实际效果:

http://jsfiddle.net/L9tr0uyq/

下面是我的html:

代码语言:javascript
运行
复制
<div class="row ligne">

    <div class="col-xs-3 nom">TEST 1</div>
    <div class="col-xs-3 annee">2010</div>  
    <div class="col-xs-3 statut">BUILT</div> 
    <div class="col-xs-3 type">LIVE</div> 
    <div class="col-xs-12 content">


Inter haec Orfitus praefecti potestate regebat urbem aeternam ultra modum delatae dignitatis sese efferens insolenter, vir quidem prudens et forensium negotiorum oppido gnarus, sed splendore liberalium doctrinarum minus quam nobilem decuerat institutus, quo administrante seditiones sunt concitatae graves ob inopiam vini: huius avidis usibus vulgus intentum ad motus asperos excitatur et crebros.
</div>

  </div>

  <div class="row ligne">

    <div class="col-xs-3 nom">TEST 2</div>
    <div class="col-xs-3 annee" data-annee="2013-12-09">2013</div>  
    <div class="col-xs-3 statut">ON GOING</div> 
    <div class="col-xs-3 type">LEISURE</div> 
    <div class="col-xs-12 content">


Inter haec Orfitus praefecti potestate regebat urbem aeternam ultra modum delatae dignitatis sese efferens insolenter, vir quidem prudens et forensium negotiorum oppido gnarus, sed splendore liberalium doctrinarum minus quam nobilem decuerat institutus, quo administrante seditiones sunt concitatae graves ob inopiam vini: huius avidis usibus vulgus intentum ad motus asperos excitatur et crebros.

</div>

  </div>

  <div class="row ligne">

    <div class="col-xs-3 nom">TEST 3</div>
    <div class="col-xs-3 annee" data-annee="2013-11-04">2013</div>  
    <div class="col-xs-3 statut">ON GOING</div>
    <div class="col-xs-3 type">MOVE</div> 
    <div class="col-xs-12 content">


Inter haec Orfitus praefecti potestate regebat urbem aeternam ultra modum delatae dignitatis sese efferens insolenter, vir quidem prudens et forensium negotiorum oppido gnarus, sed splendore liberalium doctrinarum minus quam nobilem decuerat institutus, quo administrante seditiones sunt concitatae graves ob inopiam vini: huius avidis usibus vulgus intentum ad motus asperos excitatur et crebros.

</div>
  </div>

我的css:

代码语言:javascript
运行
复制
body {font-size:12px;line-height:16px;}

.row.ligne {border-top:1px solid black;cursor:pointer}
.content {display:none}
.title {position: absolute;cursor:pointer}
.titre {position:fixed;width:100%;background-color:white;z-index:100}
#index {padding-top:16px;}

还有我的Jquery:

代码语言:javascript
运行
复制
$('body').on('click', '.ligne', function () {

  $(this).siblings().children(".content").slideUp(300);
  $(this).children(".content").slideDown(300);

});


$('body').on('click', '.ligne .col-xs-3', function () {

  $(".content").slideUp(300)

});
EN

回答 2

Stack Overflow用户

发布于 2015-12-02 23:09:29

第一件事是必须检查内容是否可见,这样你就知道你需要向上还是向下滚动。

第二件事是单击类为content的子元素,如果是这样:返回false。

如下图所示:

代码语言:javascript
运行
复制
$('body').on('click', '.ligne', function () {
  if ($(this).children(".content").is(":visible")) {
    $(this).children(".content").slideUp(300);
  } else {
    $(this).children(".content").slideDown(300);
  }
}).children().click(function(e) { // trigger click on children
    if ($(e.target).hasClass("content")) { // if e.target has the class '.content'
    return false; // dont do the code above '.children().click()'
  }
});
票数 0
EN

Stack Overflow用户

发布于 2015-12-02 23:30:44

代码语言:javascript
运行
复制
$('body').on('click', '.ligne', function () {

  if(! $(this).hasClass('ouvert')) {
    $(this).siblings().children(".content").slideUp(300);
    $(this).children(".content").slideDown(300);
    $(this).addClass('ouvert');
  }

});


$('body').on('click', '.ligne.ouvert', function () {

  $(this).children(".content").slideUp(300);
  $(this).removeClass('ouvert');

});

如果您将您的代码更新为以下代码,它将会工作。这与Daan Heskes的答案类似,但与类有关。

我更喜欢使用类,因为它给你的源代码增加了更多的意义,这使得其他开发人员更容易阅读。

http://jsfiddle.net/L9tr0uyq/9/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34045817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档