我有以下HTML代码:
<input type="text" name="username" width="40" size="9">
<span name="foo"></span>
<input type="password" name="password" width="40" size="9">
我想得到下一个输入元素的名称时,点击用户名,我做了什么:
$(document).on("click", function (e) {
var NextElement = $(e.target).next().attr("name"); //return foo
});
但是,我得到了“foo”,我实际上想要下一个输入元素,所以我这样做了:
var NextElement = $(e.target).next("input").attr("name"); // return undefined
正如我期望得到的“password”,这个返回“undefined”。
请看这个人的jsfiddle演示。
我做错了什么?
谢谢!
4条答案
按热度按时间ozxc1zmp1#
由于
next
只检查紧接着的元素,因此没有直接的函数,但您可以这样做:Demonstration
通常我会找到另一种不依赖于元素顺序的解决方案,例如一个数据属性给出相关元素的id。当然,如果顺序确实决定了要获取的元素,则除外。
az31mfrm2#
使用
nextAll()
:http://jsfiddle.net/KBWdh/2/
polkgigr3#
你可以这样做:
由于click事件被添加到
document
中,我们需要在document
中找到输入,因此next()
方法在这里不起作用,正如您所期望的那样。bxjv4tth4#
next()将返回下一个兄弟,不管你在括号里放了什么。就像docs说的:
如果提供了选择器,则仅当下一个同级与该选择器匹配时才检索该同级。
使用
.next().next()
或nextAll()