gpt4 book ai didi

Javascript 显示/隐藏多个 div 简化

转载 作者:行者123 更新时间:2023-12-02 16:57:32 25 4
gpt4 key购买 nike

更新

使用 @Joe 和 @divakar 代码并将它们组合在一起,下面是更新后的简化代码,可以使用!谢谢大家!

JAVASCRIPT

$(document).ready(function() {
$('.mod1').show();

$('.circle').click(function() {
$('.circle').addClass('circle_active');
$('.hide').hide();
var id = $(this).attr('id');
$(this).addClass('circle_active') // add the active class to the clicked link
.siblings().removeClass('circle_active'); // remove the active class from the other links
$('.' + id).show();
});

});

CSS

.hide {
display: none;
}

HTML

<div class="content" id="panel2">
<div class="row right">
<div class='small-12 medium-12 large-12 columns'>
<a id="mod1" class="circle">1</a>
<a id="mod2" class="circle">2</a>
<a id="mod3" class="circle">3</a>
<a id="mod4" class="circle">4</a>
<a id="mod5" class="circle">5</a>
</div>
</div>

<div class="mod1 hide">
<p>Module 1</p>
<table class="footable">
<thead>
<tr>
<th data-class="expand" data-sort-initial="true">No.</th>
<th>Question Text</th>
<th>Answer Text</th>
<th>Tally</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Is this a training question (A)?</td>
<td>
<p>A1. Incorrect</p>
<p>A2. Incorrect</p>
<p class="correctAnswer">A3. Correct</p>
<p>A4. Incorrect</p>
</td>
<td>
<div id="progress">
<span id="percent" style="left:50%;">50%</span>
<div id="bar"></div>
</div>
<div id="progress">
<span id="percent">50%</span>
<div id="bar"></div>
</div>
<div id="progress">
<span id="percent">50%</span>
<div id="bar"></div>
</div>
<div id="progress">
<span id="percent">50%</span>
<div id="bar"></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>

<div class="mod2 hide">
<p>Module 2</p>
<table class="footable">
<thead>
<tr>
<th data-class="expand" data-sort-initial="true">No.</th>
<th>Question Text</th>
<th>Answer Text</th>
<th>Tally</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Is this a training question (B)?</td>
<td>
<p>A1. Incorrect</p>
<p>A2. Incorrect</p>
<p class="correctAnswer">A3. Correct</p>
<p>A4. Incorrect</p>
</td>
<td>
<div id="progress">
<span id="percent" style="left:50%;">50%</span>
<div id="bar"></div>
</div>
<div id="progress">
<span id="percent">50%</span>
<div id="bar"></div>
</div>
<div id="progress">
<span id="percent">50%</span>
<div id="bar"></div>
</div>
<div id="progress">
<span id="percent">50%</span>
<div id="bar"></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>


<div class="mod3 hide">
<p>Module 3</p>
<table class="footable">
<thead>
<tr>
<th data-class="expand" data-sort-initial="true">No.</th>
<th>Question Text</th>
<th>Answer Text</th>
<th>Tally</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Is this a training question (C)?</td>
<td>
<p>A1. Incorrect</p>
<p>A2. Incorrect</p>
<p class="correctAnswer">A3. Correct</p>
<p>A4. Incorrect</p>
</td>
<td>
<div id="progress">
<span id="percent" style="left:50%;">50%</span>
<div id="bar"></div>
</div>
<div id="progress">
<span id="percent">50%</span>
<div id="bar"></div>
</div>
<div id="progress">
<span id="percent">50%</span>
<div id="bar"></div>
</div>
<div id="progress">
<span id="percent">50%</span>
<div id="bar"></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>

<div class="mod4 hide">
<p>Module 4</p>
<table class="footable">
<thead>
<tr>
<th data-class="expand" data-sort-initial="true">No.</th>
<th>Question Text</th>
<th>Answer Text</th>
<th>Tally</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Is this a training question (D)?</td>
<td>
<p>A1. Incorrect</p>
<p>A2. Incorrect</p>
<p class="correctAnswer">A3. Correct</p>
<p>A4. Incorrect</p>
</td>
<td>
<div id="progress">
<span id="percent" style="left:50%;">50%</span>
<div id="bar"></div>
</div>
<div id="progress">
<span id="percent">50%</span>
<div id="bar"></div>
</div>
<div id="progress">
<span id="percent">50%</span>
<div id="bar"></div>
</div>
<div id="progress">
<span id="percent">50%</span>
<div id="bar"></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>

我是编写 javascript 的初学者(正如您在下面的代码中看到的那样!)。我编写了一些非常粗糙的代码,使用 show/hide 来显示不同的 div 元素。一切正常,但我知道这不是最好的方法。目前我有 4 个显示和隐藏的 div,但是将会有 20 个,如果我这样做的话,这将是很多代码。

我知道有更好的编码方法,但我的谷歌搜索并没有太大帮助。我是这方面的初学者,所以如果有人可以帮助解释更好的方法是什么,我将不胜感激。我不知道使用数组还是循环是如何做到的,但我不知道从哪里开始。正如您所看到的,我的代码重复了很多次,我想知道是否有更简单的方法来做到这一点?

JAVASCRIPT

$(document).ready(function(){
$('#mod1').removeClass('circle_active');
$('#mod2').removeClass('circle_active');
$('#mod3').removeClass('circle_active');
$('#mod4').removeClass('circle_active');
$('#module1').show();
$('#module2').hide();
$('#module3').hide();
$('#module4').hide();


$('#mod1').click(function(){
$('#mod1').addClass('circle_active');
$('#mod2').removeClass('circle_active');
$('#mod3').removeClass('circle_active');
$('#mod4').removeClass('circle_active');
$('#module1').show();
$('#module2').hide();
$('#module3').hide();
$('#module4').hide();
});

$('#mod2').click(function(){
$('#mod1').removeClass('circle_active');
$('#mod2').addClass('circle_active');
$('#mod3').removeClass('circle_active');
$('#mod4').removeClass('circle_active');
$('#module1').hide();
$('#module2').show();
$('#module3').hide();
$('#module4').hide();
});

$('#mod3').click(function(){
$('#mod1').removeClass('circle_active');
$('#mod2').removeClass('circle_active');
$('#mod3').addClass('circle_active');
$('#mod4').removeClass('circle_active');
$('#module1').hide();
$('#module2').hide();
$('#module3').show();
$('#module4').hide();
});

$('#mod4').click(function(){
$('#mod1').removeClass('circle_active');
$('#mod2').removeClass('circle_active');
$('#mod3').removeClass('circle_active');
$('#mod4').addClass('circle_active');
$('#module1').hide();
$('#module2').hide();
$('#module3').hide();
$('#module4').show();
});
});

HTML

   <div class="content" id="panel2">
<div class="row right">
<div class='small-12 medium-12 large-12 columns'>
<a id="mod1" class="circle">1</a>
<a id="mod2" class="circle">2</a>
<a id="mod3" class="circle">3</a>
<a id="mod4" class="circle">4</a>
</div>
</div>

<div id="module1">
<p>Module 1</p>
<table class="footable">
<thead>
<tr>
<th data-class="expand" data-sort-initial="true">No.</th>
<th>Question Text</th>
<th>Answer Text</th>
<th>Tally</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Is this a training question (A)?</td>
<td>
<p>A1. Incorrect</p>
<p>A2. Incorrect</p>
<p class="correctAnswer">A3. Correct</p>
<p>A4. Incorrect</p>
</td>
<td>
<div id="progress">
<span id="percent" style="left:50%;">50%</span>
<div id="bar"></div>
</div>
<div id="progress">
<span id="percent">50%</span>
<div id="bar"></div>
</div>
<div id="progress">
<span id="percent">50%</span>
<div id="bar"></div>
</div>
<div id="progress">
<span id="percent">50%</span>
<div id="bar"></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>

<div id="module2">
<p>Module 2</p>
<table class="footable">
<thead>
<tr>
<th data-class="expand" data-sort-initial="true">No.</th>
<th>Question Text</th>
<th>Answer Text</th>
<th>Tally</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Is this a training question (B)?</td>
<td>
<p>A1. Incorrect</p>
<p>A2. Incorrect</p>
<p class="correctAnswer">A3. Correct</p>
<p>A4. Incorrect</p>
</td>
<td>
<div id="progress">
<span id="percent" style="left:50%;">50%</span>
<div id="bar"></div>
</div>
<div id="progress">
<span id="percent">50%</span>
<div id="bar"></div>
</div>
<div id="progress">
<span id="percent">50%</span>
<div id="bar"></div>
</div>
<div id="progress">
<span id="percent">50%</span>
<div id="bar"></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>


<div id="module3">
<p>Module 3</p>
<table class="footable">
<thead>
<tr>
<th data-class="expand" data-sort-initial="true">No.</th>
<th>Question Text</th>
<th>Answer Text</th>
<th>Tally</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Is this a training question (C)?</td>
<td>
<p>A1. Incorrect</p>
<p>A2. Incorrect</p>
<p class="correctAnswer">A3. Correct</p>
<p>A4. Incorrect</p>
</td>
<td>
<div id="progress">
<span id="percent" style="left:50%;">50%</span>
<div id="bar"></div>
</div>
<div id="progress">
<span id="percent">50%</span>
<div id="bar"></div>
</div>
<div id="progress">
<span id="percent">50%</span>
<div id="bar"></div>
</div>
<div id="progress">
<span id="percent">50%</span>
<div id="bar"></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>

<div id="module4">
<p>Module 4</p>
<table class="footable">
<thead>
<tr>
<th data-class="expand" data-sort-initial="true">No.</th>
<th>Question Text</th>
<th>Answer Text</th>
<th>Tally</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Is this a training question (D)?</td>
<td>
<p>A1. Incorrect</p>
<p>A2. Incorrect</p>
<p class="correctAnswer">A3. Correct</p>
<p>A4. Incorrect</p>
</td>
<td>
<div id="progress">
<span id="percent" style="left:50%;">50%</span>
<div id="bar"></div>
</div>
<div id="progress">
<span id="percent">50%</span>
<div id="bar"></div>
</div>
<div id="progress">
<span id="percent">50%</span>
<div id="bar"></div>
</div>
<div id="progress">
<span id="percent">50%</span>
<div id="bar"></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>

最佳答案

我不知道 #module 元素,因为我在您的 HTML 中没有看到它们,但对于 #mod 元素,您可以执行类似的操作

$("a").click(function (e) {
$(this)
.addClass("circle_active")
.siblings()
.removeClass("circle_active");
});

关于Javascript 显示/隐藏多个 div 简化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26055132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com