リストアイテムがドロップダウンリストに動的に追加される次のHTMLテンプレートがあります。キーボードイベントでホバーをシミュレートする方法
<button class="btn btn-default btn-sm dropdown" (keydown)="triggerTraverse($event)"></button>
<fa-list-filler>
<li *ngFor="let item of items [class.active]="checkItem(item,selectedItem)">
<span (click)="doNavigate()" class="cookie"></span>
</li>
</fa-list-filler>
私は、リスト項目の次ホバースタイルを持っている:
li > .cookie {
cursor: pointer;
&:hover{
background-color: 'yellow';
}
}
私は私のマウスでこれらのリスト項目を置くと、私は私ができる、すなわちリスト項目に適用されるホバースタイルを見ることができますこの場合、黄色の背景色を参照してください。
デフォルトでは、最初の項目が選択されています。つまり、クラスがアクティブです。次に、ユーザーが下矢印キーを押すと、アクティブなクラスは同じ場所にとどまりますが、ホバー状態は次のリスト項目に移動し、次の項目に移動し、折り返さなければなりません。
次のメソッドを実装しましたが、それ以降の要素で正しく処理することができません。
triggerTraverse(evt: KeyboardEvent){
if(evt.keyCode === 27){
closeDropdown();
}else if(evt.keyCode === 40){
let initialEle = document.querySelector('li.active');
initialEle.nextElementSibling.firstElementChild.classList.add('hoverstyle');
}
}
hoverstyleは、要素に背景色を追加するために実装したばかりの別のクラスです。
.hoverstyle{
background-color: 'pink';
}
誰でも助けてください。
を見ています'inspect要素で? – Searching
はい。しかし、それは、私がリスト全体を横切るために何もしていないので、第二の要素に対してのみ起こります。 – zelda
Kul、これに答えてください。論理が 'li.active'から始まり(最初の要素)、次に下に移動すると、実際には2番目の要素を超えますか? – Searching