3

为什么这不起作用

$('div.note')[0].removeClass('hidden');

我从萤火虫那里得到这个错误:

TypeError: note.removeClass is not a function
4

3 回答 3

8

$('div.note')[0]给你一个 javascript 对象,而不是 jQuery 对象,removeClass 是一个 jQuery 方法。在使用 jQuery 方法之前,您需要将其转换为 jQuery 对象。

尝试这个,

$($('div.note')[0]).removeClass('hidden');

或者

$('div.note').eq(0).removeClass('hidden');
于 2012-07-19T18:32:15.267 回答
3

如果您对括号的使用不严格,那么使用.eq()会更加简化。

$('div.note').eq(0).removeClass('hidden');
于 2012-07-19T18:33:54.293 回答
1

基本上,将每个 jQuery 调用视为给您一个如下所示的对象:

var myPosts = $(".posts");

// To help make sense of it, myPosts looks something like this.
myPosts === {
   elements : [ /* all of your returned elements */ ]
   helpfulMethod : function () { for (element in elements) { /* .... */ } },
   otherHelpfulMethod : function () { for (element in elements) { /*...*/ } }
}

如果你说:

var element = myPosts.elements[0];
element.otherHelpfulMethod();

它会向你吐出错误。

添加 .element 的方法是事后将数组称为“this”。

你也可以这样做:

for (i in arr; ....) {
    this[i] = arr[i];
}

并获得相同的效果。

所以调用 myPosts[0] 只会得到 HTML 元素。然后您需要将其包装在 jQuery 对象中以使用辅助方法,或者您需要使用 jQuery 辅助函数来访问该特定元素。

于 2012-07-19T18:47:15.177 回答