.get()无法按预期工作

时间:2015-03-03 14:53:24

标签: jquery addclass

如果这是一个非常愚蠢的错误,我道歉,但我对.get()函数有点新意。我完全按照this页面上的说明使用它,但它没有按预期工作。这是他们使用的代码

console.log( $( "li" ).get( 0 ) );

所以我尝试做同样的事情:

$('.a').get(0).addClass('g');

理论上,这应该将类'g'添加到具有类'a'的第一个元素,但它不会。我已经手动将类'g'添加到第一个元素,它确实显示出来,所以它是jQuery不能正常工作。

jQuery 2.1.0

3 个答案:

答案 0 :(得分:3)

$.fn.get如果不与$.fn.map一起使用,则返回HTMLElement没有addClass以及更多jQuery方法。

因此,您必须使用eq(或基于您想要的:first)执行以下操作

$('.a').eq(0).addClass('g'); // assuming you want first .a

如果你想要一种本地的方式(出于一些奇怪的原因)那么你可以做

$('.a').get(0).className += " g";
// space is important -------^

答案 1 :(得分:3)

.get()方法返回jQuery集合的内部数组中的第一个元素,它是一个HTMLElement,而不再是一个jQuery对象。

要获取jQuery集合中的第一个元素,并将其类型保留为jQuery对象,请改用.eq(0)

请参阅jQuery's documentation for the .eq() method

答案 2 :(得分:1)

.get()返回HTMLElement,而不是jQuery对象(http://api.jquery.com/get/)。 HTMLElements没有addClass方法。如果要将类添加到该DOM元素,则需要将其包装到$()中。这个工作:

$($('.a').get(0)).addClass('g');

或者您可以向已检索的HTMLElement添加新类:

$('.a').get(0).className += " g";
相关问题