【发布时间】:2018-03-21 01:18:44
【问题描述】:
我几乎要放弃了。找不到任何解决方案,所以我希望你能帮助我。我有一个显示/隐藏 div 的脚本,它的工作原理是这样的。如果您单击一个按钮,则会显示一个 div,如果您按下另一个按钮,它将切换到该 div。这很好用。但我希望能够通过单击最后一个按钮来关闭所有 div。
这是我的 HTML
<div class="hidden-divs-buttons">
<a class="show-div btn" target="1">Div 1</a>
<a class="show-div btn" target="2">Div 2</a>
</div>
<div class="hidden-divs">
<div id="div1" class="target-div">Content div 1</div>
<div id="div2" class="target-div">Content div 2</div>
</div>
此脚本有效,但没有关闭功能
$('.show-div').click(function() {
$('.target-div').hide();
$('#div' + $(this).attr('target')).fadeIn(1000);
});
这是我要替换工作脚本的脚本。我一直在尝试将其更改为使用关闭功能。我可能完全赞成,但希望你能指引正确的方向。我收到一条错误消息,告诉我“box.hasClass() 不是函数”。
$('.show-div').click(function() {
var box = $('#div' + $(this).attr('target'));
$('.target-div').hide();
if(box.hasCLass('close-div')) {
box.removeClass('close-div');
$('.target-div').fadeOut(1000);
} else {
box.fadeIn(1000);
box.addClass('close-div');
}
});
编辑 ID 已更新。
这就是代码的样子。使用此代码,我可以单击一个按钮并显示一个 div,单击下一个以显示另一个 div。如果我再次单击同一个按钮,它将关闭所有 div。
$('.show-div').click(function() {
var box = $('#div' + $(this).attr('target'));
if(box.hasClass('close-div')) {
$('.target-div').removeClass('close-div');
$('.target-div').fadeOut(1000);
} else {
$('.target-div').removeClass('close-div');
$('.target-div').hide();
box.fadeIn(1000);
box.addClass('close-div');
}
});
【问题讨论】:
-
ID 必须是唯一的
-
hasClass 没有大写 L - 它是
hasClass而不是hasCLass不确定这只是问题中的拼写错误还是您的真实代码 -
抱歉,ID:s 是唯一的。我为这个页面创建了一个简化的 HTML 并且错过了更改 ID。
-
请在
var box = $('#div' + $(this).attr('target'));之后插入console.log(box);并告诉我们它的输出。 -
当我更改我错过的大写 L 时,错误消失了。该脚本仍然无法按我的意愿工作。我希望我能弄清楚。
标签: javascript jquery html