gpt4 book ai didi

javascript - 使用 Vanilla JS 选择事件目标的最佳实践

转载 作者:行者123 更新时间:2023-11-28 12:16:41 26 4
gpt4 key购买 nike

问题:

  1. 每当用户单击表中的列标题时,类名 .active同样来自 table tr th span.sorting应该被删除。
  2. 添加类名 .active到当前单击的目标元素的子元素。

结构:

<table>
<tr>
<th>
<span class="sorting"></span>
</th>
<th>
<span class="sorting"></span>
</th>
<th>
<span class="sorting active"></span>
</th>
</tr>
</table>

解决方案(已完成):

  1. 不知道
  2. 要将类添加到单击列的子级:trigger.target.children[0].classList.add('active')

删除所有 active 的最佳方法是什么?类(class)来自<span class="sorting">每当我点击 <th>元素并分配 active当前单击的 block 的类?

请不要使用 jQuery。

最佳答案

您可以使用 querySelectorAll 获取元素,并使用 Array.from 将输出转换为数组。

Array.from( document.querySelectorAll( "th .sorting" ) );

现在迭代它们并使用 classList 删除该类API

Array.from( document.querySelectorAll( "th .sorting" ) ).forEach( function( ele ){
ele.classList.remove( "active" );
});

最后,您可以将类添加到事件的 currentTarget 中的当前元素

event.currentTarget.classList.add( "active" );

演示

var elements = Array.from( document.querySelectorAll( "th .sorting" ));

elements.forEach( function(ele){
ele.addEventListener( "click", function(){
elements.forEach( function( ele ){
ele.classList.remove( "active" );
});
ele.classList.add( "active" );
});
});
.active
{
background-color: #f00;
}
<table>
<tr>
<th>
<span class="sorting">A</span>
</th>
<th>
<span class="sorting">B</span>
</th>
<th>
<span class="sorting active">C</span>
</th>
</tr>
</table>

关于javascript - 使用 Vanilla JS 选择事件目标的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47989730/

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