0

我知道您使用该attr方法获取匹配集中第一个项目的属性,例如$('input').attr('name')为您提供第一个匹配输入元素的名称属性。

但是我如何直接从 HTML 元素中获取属性,例如$('input')[0]?我想做类似的事情,$('input')[0].attr('name')但这不起作用,因为attr这只是 jQuery 匹配集的一种方法,而不是匹配集中的项目。

(顺便说一句,这是因为我想将匹配集中的项目传递给函数,并能够在函数中看到该项目的属性。)

4

2 回答 2

3

如果[0]您只是想从匹配集中获取特定元素,请使用eq()

$(selector).eq(0).attr('name');

将获取name返回的集合中第一个元素的属性selector。当然,0可以替换为该选择器返回的任何元素的索引号。

同样,您可以使用:eq()选择器:

$('div:eq(0)').attr('name');

或者,如果selector是一个变量:

$(selector + ':eq(0)').attr('name');

正如 Alnitak 所指出的,在下面的评论中:

如果您要使用 eq,请使用.eq(n)而不是:eq(n)让浏览器可以使用querySelectorAll()- 后者是 jQuery 扩展。

当然,对于某些名称或属性,您可以回退到 DOM 方法:

$(selector)[0].name;

或者:

$(selector)[0].getAttribute('name');

参考:

于 2012-07-16T21:21:47.880 回答
1

当你有一个实际的 HTML 对象时,你仍然可以通过将它包装在 $(element) 中来 JQuery 化它,然后可以访问 attr()

var secondThing = $('input')[1]
foo(secondThing)

function foo(element){
var elem = $(element);
var name = elem.attr('name');

//or
name = element.getAttribute('name')

}
于 2012-07-16T21:32:24.063 回答