所以我一直在努力解决这个问题,但我很快就会提出来。确实尝试过尽我所能找到答案的最佳方法,包括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);