DRY - 兄弟元素
DRY - Sibling Elements
有没有办法缩短 JS 代码,需要在 vanilla JS 中而不是 Jquery。
我无法在这里使用下一个和上一个同级概念。
previousElementSibling 和 nextElementSibling 概念有效,但如果选择超过 3
怎么办
document.getElementById("network_tab").addEventListener("click", function(){
this.classList.add('active');
document.getElementById("network_tag_tab").classList.remove('active');
document.getElementById("device_tab").classList.remove('active');
});
document.getElementById("network_tag_tab").addEventListener("click", function(){
this.classList.add('active');
document.getElementById("network_tab").classList.remove('active');
document.getElementById("device_tab").classList.remove('active');
});
document.getElementById("device_tab").addEventListener("click", function(){
this.classList.add('active');
document.getElementById("network_tag_tab").classList.remove('active');
document.getElementById("network_tab").classList.remove('active');
});
.active{
border: 5px solid black;
padding: 10px;
}
<table id="nav-table">
<tbody>
<tr>
<td id="network_tab" class="org_overview_tab active"><a href="#">Networks</a></td>
<td id="network_tag_tab" class="org_overview_tab"><a href="#">Network tags</a></td>
<td id="device_tab" class="org_overview_tab left-border"><a href="#">Devices</a></td>
</tr>
</tbody>
</table>
可以泛化JS代码。这样即使您添加更多选项卡,它也可以在不更改 JS 的情况下工作。检查下面的代码。
var tabs = document.querySelectorAll('.org_overview_tab');
for(var index=0;index<tabs.length;index++) {
tabs[index].addEventListener('click', function(){
document.querySelector('.active').classList.remove('active');
this.classList.add('active');
});
}
.active{
border: 5px solid black;
padding: 10px;
}
<table id="nav-table">
<tbody>
<tr>
<td id="network_tab" class="org_overview_tab active"><a href="#">Networks</a></td>
<td id="network_tag_tab" class="org_overview_tab"><a href="#">Network tags</a></td>
<td id="device_tab" class="org_overview_tab left-border"><a href="#">Devices</a></td>
</tr>
</tbody>
</table>
你只需要一个 EventListener ...
document.getElementById('nav-table').addEventListener('click', e => {
if (e.target.nodeName== 'A'){
document.querySelector('.active').classList.remove('active');
e.target.parentNode.classList.add('active');
}
});
有没有办法缩短 JS 代码,需要在 vanilla JS 中而不是 Jquery。
我无法在这里使用下一个和上一个同级概念。 previousElementSibling 和 nextElementSibling 概念有效,但如果选择超过 3
怎么办 document.getElementById("network_tab").addEventListener("click", function(){
this.classList.add('active');
document.getElementById("network_tag_tab").classList.remove('active');
document.getElementById("device_tab").classList.remove('active');
});
document.getElementById("network_tag_tab").addEventListener("click", function(){
this.classList.add('active');
document.getElementById("network_tab").classList.remove('active');
document.getElementById("device_tab").classList.remove('active');
});
document.getElementById("device_tab").addEventListener("click", function(){
this.classList.add('active');
document.getElementById("network_tag_tab").classList.remove('active');
document.getElementById("network_tab").classList.remove('active');
});
.active{
border: 5px solid black;
padding: 10px;
}
<table id="nav-table">
<tbody>
<tr>
<td id="network_tab" class="org_overview_tab active"><a href="#">Networks</a></td>
<td id="network_tag_tab" class="org_overview_tab"><a href="#">Network tags</a></td>
<td id="device_tab" class="org_overview_tab left-border"><a href="#">Devices</a></td>
</tr>
</tbody>
</table>
可以泛化JS代码。这样即使您添加更多选项卡,它也可以在不更改 JS 的情况下工作。检查下面的代码。
var tabs = document.querySelectorAll('.org_overview_tab');
for(var index=0;index<tabs.length;index++) {
tabs[index].addEventListener('click', function(){
document.querySelector('.active').classList.remove('active');
this.classList.add('active');
});
}
.active{
border: 5px solid black;
padding: 10px;
}
<table id="nav-table">
<tbody>
<tr>
<td id="network_tab" class="org_overview_tab active"><a href="#">Networks</a></td>
<td id="network_tag_tab" class="org_overview_tab"><a href="#">Network tags</a></td>
<td id="device_tab" class="org_overview_tab left-border"><a href="#">Devices</a></td>
</tr>
</tbody>
</table>
你只需要一个 EventListener ...
document.getElementById('nav-table').addEventListener('click', e => {
if (e.target.nodeName== 'A'){
document.querySelector('.active').classList.remove('active');
e.target.parentNode.classList.add('active');
}
});