gpt4 book ai didi

javascript - 如何在和元素之间遍历?

转载 作者:行者123 更新时间:2023-11-28 15:18:49 24 4
gpt4 key购买 nike

我有一个 html 表结构如下:

<table>     
<tr><td>ABC</td></tr>
<tr>
<td><input class="inp"/></td>
<td><input class="inp"/></td>
</tr>
<tr><td><input class="inp"/></td></tr>
<tr><td><input class="inp"/></td></tr>
</table>
<button id="btn">Click me</button>

然后我的目的是让焦点始终通过单击按钮转到“inp”类中的下一个输入字段。这是我的脚本:

var focused = null;
$(".inp").focus(function () {
focused = $(this);
}).first().focus();

$("#btn").click(function(e){
if (focused && focused.length) {
//this only works horizontally.
focused.parent().next().find(".inp").focus();

// this only works vertically.
//focused.closest("tr").next().find(".inp").focus();
}
});

我想聚焦第一行最后一个元素之后的第二行。我如何结合这两个语句?

最佳答案

您可以使用 JQuery .index() 来执行此操作和 .eq()在所有输入元素的包装集上运行函数。

当焦点位于最后一个输入并单击按钮时,这会将焦点移回到第一个输入。

$(function() {
var $inputs = $('.inp');

var index = null;

$inputs.focus(function() {
index = $inputs.index($(this));
});

$inputs.first().focus();

$('#btn').click(function(e) {
if (index != null) {
index = (index + 1) % $inputs.length;
$inputs.eq(index).focus();
}
});
});

jsfiddle

此版本不会将焦点返回到第一个输入。

$('#btn').click(function(e) {
if (index != null) {
if ((index + 1) < $inputs.length) {
$inputs.eq(index + 1).focus();
}
}
});

jsfiddle

关于javascript - 如何在<td>和<tr>元素之间遍历?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32430494/

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