所以我一直在努力解决这个问题,但我很快就会提出来。确实尝试过尽我所能找到答案的最佳方法,包括jQuery API文档和其他SO帖子。我觉得自己快到了,但是我误会了一些东西,或者我的目标不正确。

对于多个不同的部分,我在单独的div中有2个可单击的图标,在加载时显示1个(让我说iconA),在加载时显示1个隐藏(iconB)。单击(iconA)时,它将隐藏(iconA)所在的[sectionA],然后显示(iconB)所在的[sectionB]。然后,我想(iconB)隐藏[sectionB]并显示[sectionA]。

显然,我不能使用切换功能,因为其中任一部分始终在任何给定点都隐藏。而且,由于我试图编写一个可以用于多个部分和多个图标的脚本,并且具有不同的名称,所以我不能只为所有图标和部分设置1-1类名称。

我创建了一个jsfiddle来说明。下面我将写一个简单的例子。

HTML:

<div class="sectionAparent>
   <div class="sectionA" id="example>
      <i class="fa fa-code contbtn">iconA (shown on load)</i>
   </div>
</div
<div class="sectionB" id="exampleSHOW">
   <i class="fa fa-minus minushide">iconB (hidden on load)</i>
</div>


jQuery的:

$('.contbtn').click(function(){
    var contid = $(this).attr('id');
    $('#'+contid+'show').slideToggle(1000);
    $(this).hide(1000);
});


-第一个是隐藏sectionA并显示sectionB,这很好用。

$('.minushide').click(function(){
    var cbtn = $(this).closest('.sectionB').siblings('.sectionAparent').find('div[id]');
    var cid = $(cbtn).attr('id')
   $('#'+cid+'show').slideUp(1000);
   $(cid).slideDown(1000);
});


-所以我的想法是跳到最接近祖先的那部分,而该祖先是包含我所需ID的部分的同级项。然后找到具有该ID的div,检索该ID,然后使用它显示包含该ID的部分,并隐藏具有ID + more的部分。目的是使该变量对于具有相似命名约定的多个不同部分是可变的,而不必在我的脚本内的列表中硬编码这些部分的名称。

希望这是有道理的,我对文字墙表示歉意,只是想确保我传达了我想做的事情和所在。如果我的逻辑不正确,或者有更简单的方法可以做到,那么我无所不包!谢谢。

https://jsfiddle.net/dankbawls/wnjxwyfy/

最佳答案

您忘记在js的倒数第二行的sid中附加'#'字符

Updated fiddle
     $('#'+sid).slideDown(2000);

09-25 22:25