我知道您使用attr
方法获取匹配集中第一项的属性,例如$('input').attr('name')
为您提供第一个匹配的输入元素的name属性。
但是如何直接从HTML元素获取属性,例如$('input')[0]
?我想做$('input')[0].attr('name')
之类的事情,但这不起作用,因为attr
只是jQuery匹配集的方法,而不是匹配集中的项。
(顺便说一句,这是因为我想将匹配集中的项目传递给函数,并且能够在函数中看到该项目的属性。)
答案 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')
}