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