Jquery:如果其他滑动开关被启用(可见),在启动新的滑动开关之前关闭

jquery: if other slidetoggle is enabled (visible), close before initiating new slidetoggle

本文关键字:开关 启动 可见 其他 如果 启用 Jquery      更新时间:2023-09-26

我有以下脚本。我有3个div都是display: hidden;我想使用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>

这个脚本工作得很好。唯一的问题是这三个可以同时打开。我只希望我在任何时候都能打开。所以…我该如何修改脚本来执行以下操作…

…如果没有打开,并且查看器单击其中一个id,则打开....…如果其中一个div是打开的,并且查看器单击另一个id,它会将打开的那个滑动,然后将新的向下滑动。

提前感谢!

关于注释的编辑

如果你不想检查标记等,你可以使用下面的东西来实现你想要的:

$("#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示例