gpt4 book ai didi

angularjs - 使用键盘导航 UI

转载 作者:行者123 更新时间:2023-12-04 00:21:55 26 4
gpt4 key购买 nike

考虑以下标记 -

<ul id="list">
<li class="list-item" tabindex="0">test 1</li>
<li class="list-item" tabindex="1">test 2</li>
<li class="list-item" tabindex="2">test 3</li>
<li class="list-item" tabindex="3">test 4</li>
<li class="list-item" tabindex="4">test 5</li>
<li class="list-item" tabindex="5">test 6</li>
<li class="list-item" tabindex="6">test 7</li>
</ul>

和这段 jQuery 代码 -
$(".list-item").bind({
keydown: function(e) {
var key = e.keyCode;
var target = $(e.currentTarget);

switch(key) {
case 38: // arrow up
target.prev().focus();
break;
case 40: // arrow down
target.next().focus();
break;
}
},

focusin: function(e) {
$(e.currentTarget).addClass("selected");
},

focusout: function(e) {
$(e.currentTarget).removeClass("selected");
}
});
$("li").first().focus();

如何以 Angular 移植此代码?到目前为止我有这个-
 <li class="list-item" ng-repeat="item in items" tabindex="{{item.tabIndex}}">
{{item.name}}
</li>

如何进行 Angular 绑定(bind)?

最佳答案

没有 jQuery 的指令

.directive('arrow', function ($timeout) {
return function (scope, element, attrs) {
element.bind("keydown keypress", function (event) {
if (event.which === 38) {
var prevNode = element[0].previousElementSibling;
var prev = angular.element(prevNode);
prev[0].focus();
}
if (event.which === 40) {
var target = element.next();
target[0].focus();
}
});
};
});

html中的用法
<tr arrow>
<td>test 1</td>
</tr>
<tr arrow>
<td>test 2</td>
</tr>

关于angularjs - 使用键盘导航 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16859970/

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