使用jQuery,如何获取HTML元素的属性,即不是匹配集的第一个元素?

时间:2012-07-16 21:19:36

标签: javascript jquery jquery-selectors

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

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

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

2 个答案:

答案 0 :(得分: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');

参考文献:

答案 1 :(得分:1)

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

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

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

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

}