2015-12-02 85 views
0

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

重要的是,在'.content'内单击时,内容不会滑动。

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

它的作品,它关闭“。内容”,但oppen它再次。

这里是一个的jsfiddle看到它在行动:

http://jsfiddle.net/L9tr0uyq/

这里是我的html:

<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:

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:

$('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) 

}); 
+0

我会在点击添加一个新的特殊的类,然后在该类的点击,关闭它。 – Melissa

+0

@梅丽莎你可以帮助细节? (''click','.ligne',function(){ $(this).children(“。col-xs-3)我试过这个,但它不起作用... $('body')。 “).addClass(”open“); $(this).siblings()。children(”。content“)。slideUp(300); $(this).children(”。content“)。slideDown(300 ); }); $( '身体')上( '点击', '开',函数(){$ (” COL-XS-3 “)。removeClass( '开放'); $(” 。内容”)。效果基本show(300); }); – mmdwc

回答

0

首先,必须检查内容是否可见,以便知道是否需要向上或向下滚动。

第二件事是你点击一个content类的子元素,如果是这样的话:return false。

如下图所示:

$('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()' 
    } 
}); 

JSFiddle Demo

+0

感谢您的回复......小提琴最后的代码是什么? ($。(event.target).closest('。stap.set')。length){ \t \t if($('。stap.set ('.current'))is(“:visible”)){ \t \t $('.stap.set')。find(“.keuze-groep”)。slideUp(400); \t \t} \t} }); – mmdwc

+0

到目前为止,我删除了这些内容,这是我目前正在使用的一个类似项目。 (不想丢失数据,忘记删除之后)。哎呀。 –

+0

问题是,当我点击“.content”时,它会关闭我的div。我需要能够添加链接和“。内容”内的可点击内容,所以当点击里面的内容,它需要保持打开 – mmdwc

0
$('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'); 

}); 

如果你更新你的代码下面,它会工作。这就像大卫赫斯克斯的回答,但是完成了课堂。

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

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

+0

我不明白你的答案与我的不同。我只使用类。 –

+0

我检查hasClass('ouvert')',检查is(':visible')',所以我向DOM中添加了实际上不需要的类,但我更愿意添加它们,因为至少对我而言,他们使代码/ DOM更易于阅读/理解。 – Pjetr

+0

你明白了。你正在添加unnessecary类,而你也可以只是简单地检查它是否可见。 '.is(':visible')'对我来说比'hasClass('ouvert')'更容易理解。因为你的方式并没有立即告诉另一个开发者你正在检查什么,因为你使用了不需要的类。它只是让你必须理解(并找出)'.ouvert'的作用。所以其他开发人员必须明白这是一个额外的步骤,而他们可能已经知道'.is(':visible')'检查的是什么。 –

相关问题