.get() 没有按预期工作

.get() not working as expected

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

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

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

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

理论上,这应该将 class 'g' 添加到带有 class 'a' 的第一个元素,但事实并非如此。我已经手动将 class 'g' 添加到第一个元素并且它确实显示了,所以它是 jQuery 不起作用。

jQuery 2.1.0

$.fn.get 当不与 $.fn.map 一起使用时,returns 没有 addClassHTMLElement 以及更多 jQuery方法。

因此您必须根据需要使用 eq(或 :first

执行以下操作
$('.a').eq(0).addClass('g'); // assuming you want first .a

如果你想要一个原生的方式来做这件事(出于一些奇怪的原因)那么你可以做

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

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

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

jQuery's documentation for the .eq() method

.get() returns HTMLElement,不是 jQuery 对象 (http://api.jquery.com/get/)。 HTMLElements 没有 addClass 方法。如果要将 class 添加到 DOM 元素,则需要将其包装到 $() 中。这应该有效:

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

或者您可以向检索到的 HTMLElement 添加一个新的 class:

$('.a').get(0).className += " g";