jquery:如果启用了其他slidetoggle(可见),则在启动新的slidetoggle之前关闭

时间:2014-03-15 06:41:11

标签: javascript jquery

我有以下脚本。我有3个div显示全部:隐藏;我想使用slideToggle从页面顶部下拉。

<script type="text/javascript">
$(document).ready(function(){

$("#irN").click(function () {
   $('#irN_dd').slideToggle();
});

$("#myir").click(function () {
   $('#myir_dd').slideToggle();
});

$("#myirmsg").click(function () {
   $('#myirmsg_dd').slideToggle();
});

});
</script>

HTML:

<a id="irN">irN</a>
<a id="myir">myir</a>
<a id="myirmsg">myirmsg</a>

这个脚本效果很好。唯一的问题是所有3个都可以同时打开。我只希望1能够在任何给定时间打开。那么......我将如何修改脚本以执行以下操作..

...如果没有打开并且观众点击其中一个ID,它会打开.... ...如果其中一个div处于打开状态且观察者点击另一个id,则会将其打开,然后向下滑动。

提前致谢!

1 个答案:

答案 0 :(得分:0)

编辑评论

如果您不想检查标记等,可以使用以下内容来实现您想要的内容:

$("#irN, #myir, #myirmsg").click(function () {      
  var example = "#" + this.id + "_dd";
  $(example).siblings("div[id$=_dd]").slideUp()
                                     .is(":visible") 
                                     ?  $(example).delay(1000).slideToggle() 
                                     :  $(example).slideToggle(); 
});

这使你的所有功能都融入了一个简洁的事件(可能看起来更好但我现在太累了,无法想到更好的事情)。

jsFiddle example